我知道类似的问题已经存在于stackoverflow上。当我翻阅它们时,它并没有解决我正在寻找的问题。
我有一个spring-boot web service作为Oaut2ClientManagement
,我在其中创建了一个API,它基本上会注册一个新的客户端。当新公司注册时,companyId
(它是在一些company_details
表中预定义的,是的,公司被添加到列表中,但没有注册访问API)被发送,因此我必须生成client-id
和client-secret
,我将存储在CLIENT_KEY_MANAGEMENT
表中。在此基础上编写了一个java代码来生成accessToken
。
所以我的问题是,我如何根据我在请求中收到的companyId
生成client-id和client-secret?我已经看过了。但是在spring-boot oauth
中是否有任何预定义的方法可以完成这项工作呢?因为下一步是基于它生成访问令牌。
我也使用了oAuth tutorial。但是,在这个client-id
和client-secret
存储在属性文件中,而不是在数据库/其他来源。看起来也是一对。
如果有人能指导我使用spring-boot
实现上述场景,那就太好了。
2条答案
按热度按时间ezykj2lf1#
有一个
JdbcClientDetailsService
用于此特定目的。您需要在数据库中定义以下表
并按如下方式配置Oauth2授权服务器
最后,您可以在注册
companyId
的位置注入JdbcClientDetailsService
bean。最后,您可以使用这些客户端凭据登录。
更新
如果你想让你的密码被散列,你可以设置一个PasswordEncoder如下。
BaseClientDetails
在org.springframework.security.oauth2.provider.client
封装中提供。客户端机密将不会由服务生成。您需要生成它并将其设置为
BaseClientDetails
。igetnqfo2#
我需要这个代码为springboot 3