Spring Security,OAUTH2,动态客户端秘密

煮沸

Spring Security版本5.4.0

通常client-id和client-secret是Oauth2提供程序提供的值,它们对于每个客户端都是永久的,可以在配置文件中这样指定

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: google-client-id
            client-secret: google-client-secret

但是在我的情况下,我有固定的client-id,但是每次尝试获取身份验证代码时,都会根据某些参数生成client-secret。在最后一个类中ClientRegistration,client-secret被定义为字符串值,因此在我的情况下不可能采用此类

我的问题是,是否可以在这种情况下使用Spring Security?如果可以,可以采用/配置什么?

杰绍

听起来您可能正在执行PKCE

在这种情况下,您可以将机密留为空白,Spring Security会在/authorize请求中生成代码质询和验证程序

从文档:

使用代码交换证明密钥(PKCE)支持公共客户端。如果客户端在不受信任的环境(例如,本机应用程序或基于Web浏览器的应用程序)中运行,因此无法维护其凭据的机密性,则在满足以下条件时将自动使用PKCE:

client-secret 被省略(或为空)

client-authentication-method设置为"none"ClientAuthenticationMethod.NONE

如果您要进行自定义操作,则可以考虑将其标准化为PKCE。

但是,如果您不能这样做,那么Spring Security会附带各种挂钩,用于/authorize/token请求中添加自定义参数我建议您看一下DefaultOAuth2AuthorizationRequestResolver#setAuthorizationRequestCustomizerDefaultAuthorizationCodeTokenResponseClient#setRequestEntityConverter

您可以在DSL中注册您的自定义授权请求和令牌请求,如下所示:

http
    .oauth2Login((oauth2) -> oauth2
        .authorizeEndpoint((authorize) -> authorize
            .authorizeRequestResolver(...)
        )
        .tokenEndpoint((token) -> token
            .accessTokenResponseClient(...)
        )
    );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring Security中具有密码授予权限的oAuth2客户端

Spring Security OAuth2客户端-重定向过多

用于Spring Security OAuth2的Web和移动客户端

Spring Security 5 OAuth2客户端密码授予类型

Spring security Oauth2 客户端凭据水平扩展

Spring Security oauth2客户端-如何获取JWT令牌

Spring Boot OAuth2客户端凭据使用Webflux动态配置

Spring Boot + Oauth2客户端凭据

带有Spring的OAuth2的Android客户端

Spring Boot 2.0 M6 (Spring Security 5.0) 中的 oAuth2 REST 客户端

Spring Security OAuth 2和客户端凭证流

用于2足(客户端凭据)OAuth2服务器的Spring-security上下文设置

使用XML作为授权码的示例Spring Security OAuth2客户端配置在哪里?

Spring Security OAuth2是否通过PKCE支持浏览器(Angular)客户端的授权代码流?

通过 Spring Security OAuth2 客户端成功匿名身份验证后重定向到特定 URL

Spring Security 5.1.1 OAuth2客户端连接到spring-security-oauth2身份验证服务器

在NoSQL数据库中实现Spring oauth2客户端数据存储

Spring安全性中的Oauth2客户端

将多个客户端添加到Spring OAuth2 Auth Server

如何使用Spring在OAuth2身份验证中生成客户端密钥

客户端和资源服务器的Spring OAuth2 XML配置

Spring OAuth2安全性-客户端凭据-自定义AuthenticationProvider

如何使用Spring Boot伪装客户端进行Oauth2身份验证?

客户端机密+在Spring OAuth2中刷新访问令牌

如何覆盖Spring Cloud OAuth2客户端自动配置?

使用 Spring-boot Oauth2 进行客户端注册 - tokenUri 与 issuerUri

带有Google提供者的Spring Oauth2客户端不断要求认证

弃用spring-security-oauth作为客户端

Spring Security OAuth 2:如何在JavaScript客户端中使用访问令牌