SpringBoot OAuth2:.secret()函数的用途?

时间:2018-06-25 03:39:09

标签: spring-boot oauth-2.0

我目前正在学习有关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使用此函数的参数做什么?

1 个答案:

答案 0 :(得分:0)

secret() 实际上代表client_secret。当您要发行令牌时,您的请求应由服务器授权。因此client_idclient_secret获得授权。在您的http请求中,应在client_id标头中发送client_secrethttp(可能采用base64格式)。它称为基本授权。进行身份验证时,您需要发送用户名和密码。

可能您应该在http标头中发送类似的内容(基本:“ base64client_id的“ client_secret值”)

"Authorization":"Basic dHJ1c3RlZC1hcHA6c2VjcmV0"

如果您使用的是邮递员,则令牌端点将为http://host:port/contextPath/oauth/token,并要求牧民为 enter image description here

如果单击“页眉”选项卡,则会看到client_idsecret如何以base64格式转换。在请求正文中,您应该发送 grant_typepassword 作为令牌的键值对。