如何在Spring Boot OAuth2服务器中启用多个客户端ID?
我的Spring Boot OAuth2服务器正在工作,但现在我们需要区分来自不同部门的不同客户机,并根据部门提供不同的功能。我想我可以用客户机id来分隔它。本指南展示了如何使用单个客户机id设置OAuth2服务器,但是如何使用多个客户机id来设置它如何在Spring Boot OAuth2服务器中启用多个客户端ID?,spring,spring-boot,spring-security-oauth2,spring-oauth2,Spring,Spring Boot,Spring Security Oauth2,Spring Oauth2,我的Spring Boot OAuth2服务器正在工作,但现在我们需要区分来自不同部门的不同客户机,并根据部门提供不同的功能。我想我可以用客户机id来分隔它。本指南展示了如何使用单个客户机id设置OAuth2服务器,但是如何使用多个客户机id来设置它 然后,当发出API请求时,如何确定它是哪个客户端id?您需要的是动态客户端注册,如下所示: 您可以在表oauth\u client\u details中创建多个条目,使用不同的client\u id和client\u secret组合。客户机的秘
然后,当发出API请求时,如何确定它是哪个客户端id?您需要的是动态客户端注册,如下所示:
您可以在表oauth\u client\u details中创建多个条目,使用不同的client\u id和client\u secret组合。客户机的秘密显然将被加密 现在要生成刷新和访问令牌,点击url
/oauth/token
带有授权:基本base64编码
其中base64编码将是客户机id:client\u secret
的base64加密。
记住,这里的客户机密码应该是原始的普通密码(没有加密)
使用SpringXML配置(以旧的方式)也可以实现同样的效果
我设置了两个静态客户端。我可以这样做吗clients.jdbc(数据源).withClient(applicationName)…和().withClient(applicationName+“-sales”)
No,我不能这样做。它需要oauth\u client\u details
表,并将尝试向数据库中插入两行,下次运行时,它将尝试重新插入它们,从而导致重复密钥冲突。谁知道它会将客户端ID插入数据库?我认为它只会将它们(客户机id/secret)存储在内存中,而将令牌存储在DB中。我将java.security.Principal
注入请求签名,然后得到请求的客户端id。我不明白为什么这是公认的答案。
<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>