当前位置: 首页 > 面试题库 >

Spring Security OAuth 2.0-授权代码授予始终需要客户端机密

鞠安民
2023-03-14
问题内容

根据规范,不要求使用授权码补助金的令牌的请求作为要被认证,只要client_id是包含在请求和所述client_id是相同的一个用于生成所述代码。但是,使用Spring Security OAuth 2.0实现,/oauth/token即使从未为客户端分配秘密,端点上始终总是需要基本身份验证。

似乎由于接口中的isSecretRequired()方法,似乎支持允许客户端没有秘密ClientDetails。为了使没有秘密的客户端能够在/oauth/tokenURL上进行身份验证,我该怎么做?

4.1.3。访问令牌请求

客户端通过 按照附录B
使用“ application / x-www-form-urlencoded”
格式通过HTTP
请求实体正文中的UTF-8字符编码发送以下参数来向令牌端点发出请求:

grant_type必填。值必须设置为“ authorization_code”。

所需的代码。从授权服务器收到的授权码。

redirect_uri要求,如果“ redirect_uri”参数如第4.1.1节所述包含在授权请求中,则它们的值必须相同。

如果客户端未按照第3.2.1节中所述向授权服务器进行身份验证,则需要client_id。

如果客户端类型是机密的,或者向客户端颁发了客户端凭据(或分配了其他身份验证要求),则
客户端必须按照
3.2.1节中的说明,通过授权服务器进行身份验证。


问题答案:

使用allowFormAuthenticationForClients()下面的代码示例中所示的方法,可以使用表单参数而不是基本身份验证来验证客户端。

class AuthorizationServerConfigurer extends AuthorizationServerConfigurerAdapter {

    @Override
    void configure(AuthorizationServerSecurityConfigurer security) {
        security
                .tokenKeyAccess("permitAll()")
                .checkTokenAccess("isAuthenticated()")
                .allowFormAuthenticationForClients()
    }
}

allowFormAuthenticationForClients()方法触发的添加,ClientCredentialsTokenEndpointFilter从而允许通过表单参数进行身份验证。



 类似资料:
  • 本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源

  • 问题内容: 我在注册后使用以下方法进行程序化登录 用户已通过身份验证,但始终具有ROLE_ANONYMOUS我不知道为什么?有任何想法吗 ? 问题答案: 这种现象看起来很奇怪。Javi建议手动将安全性上下文持久化到会话中,但是应该由Spring Security的自动完成。 一个可能的原因,我可以想像是在你的登记处理的页面。 禁用指定URL的所有安全过滤器。如你所见,它可能会干扰Spring Se

  • 对于授权码授予,密钥是否应该映射到每个单独的用户? 发送电子邮件时,发件人的电子邮件是什么? 谢谢 J Larry的其他信息: 这太棒了!。Docusign对库存流进行了积极监控!我正在使用JWT 我配置了一个用户。我假设电子邮件正文将类似于下面的一个。 我的问题是,如果使用密钥来识别应用程序,客户知道电子邮件是从应用程序发送的,但他如何知道使用应用程序的哪个员工发送电子邮件? 请参阅以下电子邮件

  • 我们必须在我的客户项目中集成OAuth2.0授权代码授予。目前,该应用程序使用本地登录页面。我们需要删除该页面,并将未登录的用户重定向到AS登录页面,。在AS end成功登录后,我们将被重定向到配置的。此时,我的客户端应用程序将如何知道用户已在AS登录?如何在客户端维护会话?另外,我需要用和访问令牌交换auth代码,并将其用于后续的服务器API调用。那么如何实现这一点并将令牌作为标头发送呢? 应用

  • 产品-服务:具有受保护路由的简单下游服务 jwt-resoure-server:当包含在下游服务中时,使其成为提取jwt令牌并将其设置在安全contex中的资源服务器的jar。 尤里卡-服务:发现服务 zuul-server:边缘服务器 Okta是我的auth服务器 我已经将oauth grant类型设置为be-Authorization code(我知道对于spa来说,建议使用隐式grant类型

  • 我是这方面的新手,读了很多之后,我觉得我不太明白如何在Keycloak中实现授权代码流。我的疑惑: > < li> 在创建了支持此流程的客户端后,如何执行凭据验证?默认情况下,如果我不做任何配置,我会得到一个登录表单。如果我在浏览器中打开这个html,并填写用户和密码字段,当我按下按钮时,它会将我发送到一个类型为.../realm/{ REAL _ NAME }/log in-actions/au