如何在 Spring Boot OAuth2 服务器中启用多个客户端 ID?
How do I enable multiple client ids in a Spring Boot OAuth2 Server?
我有 Spring 启动 OAuth2 服务器工作,但现在我们需要区分来自不同部门的不同客户端,并根据部门提供不同的功能。我想我可以通过客户端 ID 将它分开。本指南展示了如何使用单个客户端 ID 设置 OAuth2 服务器,但如何使用多个客户端 ID 设置它?
https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_authserver
然后,当发出 API 请求时,我如何找出它是哪个客户端 ID?
您需要的是动态客户端注册,如下所示:
https://www.baeldung.com/spring-security-oauth-dynamic-client-registration
您可以使用 client_id 和 client_secret 的不同组合在 table oauth_client_details 中创建多个条目。 client_secret显然会被加密。
现在要生成刷新和访问令牌,点击 url
/oauth/token
与 Authorization : Basic base64-encoded
、
其中base64-encoded将是client_id:client_secret
的Base64加密。
请记住,这里的client_secret应该是原始明文密码(未加密)。
使用 Spring xml 配置(以较旧的方式)可以实现与
相同的效果
<oauth:client client-id="mobile_ios"
authorized-grant-types="password,refresh_token,implicit" secret="ios_s3cret"
authorities="ROLE_CLIENT"
refresh-token-validity="7776000"
access-token-validity="300" />
<oauth:client client-id="mobile_android"
authorized-grant-types="password,refresh_token,implicit" secret="android_s3cret"
authorities="ROLE_CLIENT"
refresh-token-validity="7776000"
access-token-validity="300" />
<oauth:client client-id="web_app"
authorized-grant-types="password,refresh_token,implicit" secret="web_s3cret"
authorities="ROLE_CLIENT"
refresh-token-validity="7776000"
access-token-validity="30000" />
</oauth:client-details-service>
我有 Spring 启动 OAuth2 服务器工作,但现在我们需要区分来自不同部门的不同客户端,并根据部门提供不同的功能。我想我可以通过客户端 ID 将它分开。本指南展示了如何使用单个客户端 ID 设置 OAuth2 服务器,但如何使用多个客户端 ID 设置它?
https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_authserver
然后,当发出 API 请求时,我如何找出它是哪个客户端 ID?
您需要的是动态客户端注册,如下所示:
https://www.baeldung.com/spring-security-oauth-dynamic-client-registration
您可以使用 client_id 和 client_secret 的不同组合在 table oauth_client_details 中创建多个条目。 client_secret显然会被加密。
现在要生成刷新和访问令牌,点击 url
/oauth/token
与 Authorization : Basic base64-encoded
、
其中base64-encoded将是client_id:client_secret
的Base64加密。
请记住,这里的client_secret应该是原始明文密码(未加密)。
使用 Spring xml 配置(以较旧的方式)可以实现与
相同的效果<oauth:client client-id="mobile_ios"
authorized-grant-types="password,refresh_token,implicit" secret="ios_s3cret"
authorities="ROLE_CLIENT"
refresh-token-validity="7776000"
access-token-validity="300" />
<oauth:client client-id="mobile_android"
authorized-grant-types="password,refresh_token,implicit" secret="android_s3cret"
authorities="ROLE_CLIENT"
refresh-token-validity="7776000"
access-token-validity="300" />
<oauth:client client-id="web_app"
authorized-grant-types="password,refresh_token,implicit" secret="web_s3cret"
authorities="ROLE_CLIENT"
refresh-token-validity="7776000"
access-token-validity="30000" />
</oauth:client-details-service>