当前位置: 首页 > 知识库问答 >
问题:

字符串OAuth2资源所有者密码流--用户名和客户端ID交换

洪鹏海
2023-03-14

我尝试通过遵循spring sparklr2示例来设置一个OAuth2服务器。我将其修改为使用数据库UserDetailsService。当我尝试用curl交换带有密码的令牌时,如下所示:

curl -X POST -d "client_id=client1&client_secret=123456&grant_type=password&username=user1&password=abc" http://mymachine:8080/oauth/token

它在加载用户findByUsername()时失败,当我查看代码时,它使用client-id(在我的例子中是'client1')作为用户名。调用堆栈为:DaoAuthenticationProvider.retrieveUser(String,UsernamePasswordAuthenticationToken)行:101
DaoAuthenticationProvider(AbstractUserDetailsAuthenticationProvider)行:132 ProviderManager.Authenticate(Authentication)行:156
ClientCredentialsTokenEndpointFilter.Authenticate(Authentication)行:156
ClientCredentialsTokenEndpointFilter(

我在sparklr2上试过卷曲,

curl -X POST -d "client_id=my-trusted-client&grant_type=password&username=marissa&password=koala" http://mymachine:8080/sparklr2/oauth/token

它是相同的,'my-trusted-client'作为用户名传递。但是我还不明白为什么它会正确地为Sparklr2找回令牌。

共有1个答案

单修德
2023-03-14

通过将spring-security-oauth2版本从1.9.5.release更改为1.1.0.build-snapshot来解决。

 类似资料:
  • 我尝试按照spring sparklr2示例设置OAUTH2服务器。我将其修改为使用数据库UserDetailsService。当我尝试使用curl交换带有密码的令牌时,如下所示: 它在加载用户findByUsername()时失败,当我查看代码时,它使用client-id(在我的例子中是'client1')作为用户名。调用堆栈为:DaoAuthenticationProvider.Retriev

  • 上下文: > 我的软件应用程序是一个多租户应用程序,客户可以登录到该应用程序并生成他们自己的客户端,以便与资源所有者密码流OAuth请求一起使用。 我们的OAuth2.0授权服务器构建在WebAPI中,并继承自Microsoft提供的Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerProvider类。目前,我们只支持一个流(资源所有者密码

  • 因此,我尝试向我的oauth服务器发送一个请求(没有头):grant_type=password&username=blah&password=blah&client_id=blahblah。 我有两个身份验证管理器(一个用于客户端,另一个用于用户验证)。问题是,我的任何身份验证管理器都没有传递用户名进行验证。在这两种情况下,都使用client_id调用它们。我想要的是一个验证客户端,另一个验证用

  • 应用程序需要连接到仅支持OAuth2资源所有者密码凭据授予的API。我尝试使用下面的代码,但得到的响应代码为400“错误请求”。使用相同的代码,我可以连接到一个正常的网站并检索内容。 我知道API代码是工作,因为使用邮递员工作。在邮递员中,我只是发出一个帖子请求,提供用户名、密码和grant_type,并使用x-www. form-urlencoded 连接的返回是一个json。 你知道怎么了吗?

  • 我使用。NET Core2.0和ASP.NET Core2.0进行应用程序开发。“测试”应用程序是一个。NET核心控制台应用程序。我正在编写的核心代码是一个类库。一旦适当的测试。我选择这样做是因为我暂时不会使用它(它正在替换旧的ASPNET代码)。 无论如何,由于我必须处理各种服务的大量API密钥,所以我决定使用Microsoft Azure Key Vault来存储密钥。我有这一切设置,并理解这

  • 资源所有者密码凭据(即用户名和密码),可以直接作为获取访问令牌的授权许可。这种凭据只能应该当资源所有者和客户端之间具有高度信任时(例如,客户端是设备的操作系统的一部分,或者是一个高度特权应用程序),以及当其他授权许可类型(例如授权码)不可用时被使用。 尽管本授权类型需要对资源所有者凭据直接的客户端访问权限,但资源所有者凭据仅被用于一次请求并被交换为访问令牌。通过凭据和长期有效的访问令牌或刷新令牌的