单点登录 - wzz-code/cloud-security-sample GitHub Wiki

如果绑定,应用程序将激活 @EnableOAuth2SsoEnvironment 中提供以下属性:

  • spring.oauth2.client.* , * 等于 clientIdclientSecretaccessTokenUriuserAuthorizationUri 和以下之一:

    如果你同时指定了 userInfoUritokenInfoUri,那么你可以设置一个标志来表示一个更优于另一个(preferTokenInfo=true是默认的)。或者

  • spring.oauth2.resource.jwt.keyValue 在本地解码JWT令牌,其中密钥是验证密钥。验证密钥值是对称秘密或PEM编码的RSA公钥。如果你没有密钥,它是公开的,你可以提供一个URI,它可以下载(作为一个JSON对象与一个“值”字段)与 'spring.oauth2.resource.jwt.keyUri` 。例如,在PWS上:

curl https://uaa.run.pivotal.io/token_key
{"alg":"SHA256withRSA","value":"-----BEGIN PUBLIC KEY-----\nMIIBI...\n-----END PUBLIC KEY-----\n"}

警告:如果你使用 spring.oauth2.resource.jwt.keyUri,授权服务器需要在应用程序启动时运行。如果它找不到密钥,它会记录一个警告,并告诉你该如何解决它。如果它不能找到密钥,它会在日志上打印出一个警告,并告诉你该如何解决它。

您可以在 spring.oauth2.client.scope 中设置首选范围(作为逗号分隔列表或YAML数组) 。它默认为空,在这种情况下,大多数授权服务器将要求用户批准客户端的最大允许范围。

还有一个设置为 spring.oauth2.client.clientAuthenticationScheme 默认为 “header”。(但您可能需要将其设置为 “form”,如果像GitHub,例如,您的OAuth2提供程序不喜欢header认证)。spring.oauth2.client.* 属性绑定到 AuthorizationCodeResourceDetails 的实例,因此可以指定其所有属性。