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

字符串OAUTH2资源所有者密码Flow-username和client-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).Authenticate(Authentication)行:132 ProviderManager.Authenticate(Authentication)行:156
ClientCredentialsTokenEndpointFilter.AttretAuthentication(HttpServletRequest,HttpServletResponse)行:109

我在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.ret

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

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

  • 本文向大家介绍oauth 资源所有者密码凭证授予,包括了oauth 资源所有者密码凭证授予的使用技巧和注意事项,需要的朋友参考一下 示例 资源

  • 资源所有者密码凭据许可类型适合于资源所有者与客户端具有信任关系的情况,如设备操作系统或高级特权应用。当启用这种许可类型时授权服务器应该特别关照且只有当其他流程都不可用时才可以。 这种许可类型适合于能够获得资源所有者凭据(用户名和密码,通常使用交互的形式)的客户端。通过转换已存储的凭据至访问令牌,它也用于迁移现存的使用如HTTP基本或摘要身份验证的直接身份验证方案的客户端至OAuth。 +----

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