我目前正在学习有关SpringBoots OAuth2.0实现的知识,并且遇到了以下教程:http://www.tinmegali.com/en/2017/06/25/oauth2-using-spring/。
它包含这段代码:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("trusted-app")
.authorizedGrantTypes("client_credentials", "password", "refresh_token")
.authorities("ROLE_TRUSTED_CLIENT")
.scopes("read", "write")
.resourceIds(resourceId)
.accessTokenValiditySeconds(accessTokenValiditySeconds)
.refreshTokenValiditySeconds(refreshTokenValiditySeconds)
.secret("secret");
}
我在Internet上四处寻找关于secret
函数的文档,但是我根本找不到它的作用,包括在官方SpringBoot API参考中。我可以肯定地说的是,它需要一个string
参数。
上面的代码段中secret()
函数的作用是什么? SpringBoot使用此函数的参数做什么?
答案 0 :(得分:0)
secret()
实际上代表client_secret
。当您要发行令牌时,您的请求应由服务器授权。因此client_id
和client_secret
获得授权。在您的http
请求中,应在client_id
标头中发送client_secret
和http
(可能采用base64格式)。它称为基本授权。进行身份验证时,您需要发送用户名和密码。
可能您应该在http
标头中发送类似的内容(基本:“ base64
和client_id
的“ client_secret
值”)
"Authorization":"Basic dHJ1c3RlZC1hcHA6c2VjcmV0"
如果您使用的是邮递员,则令牌端点将为http://host:port/contextPath/oauth/token
,并要求牧民为
如果单击“页眉”选项卡,则会看到client_id
和secret
如何以base64
格式转换。在请求正文中,您应该发送 grant_type
:password
作为令牌的键值对。