首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Security oAuth抱怨缺少JWT验证器密钥,尽管它已定义

Spring Security oAuth抱怨缺少JWT验证器密钥,尽管它已定义
EN

Stack Overflow用户
提问于 2018-12-03 03:45:32
回答 2查看 4.7K关注 0票数 4

我正在将一个应用程序从Spring Boot1.5迁移到Spring Boot2。这需要更新项目使用的oAuth2库,因为从Spring Boot2开始,spring-security-oauth2库已经被spring-security-oauth2-autoconfigure取代(据我所知)。

无论哪种方式,在启动期间,我的项目都会抱怨缺少JWT验证器密钥( oAuth2所需的),尽管我清楚地拥有在application.yml文件中定义的密钥的URI,以及其他oAuth2配置,如下所示:

代码语言:javascript
复制
security:
  oauth2:
    client:
      userAuthorizationUri: ${uaa.url}/oauth/authorize
      accessTokenUri: ${uaa.url}/oauth/token
      clientId: ${security.oauth2.client.client-id}
      clientSecret: ${security.oauth2.client.client-secret}
    resource:
      jwt:
        keyUri: ${uaa.url}/oauth/token_key

我在启动过程中得到的错误是:

代码语言:javascript
复制
***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerProperties@468bb799 failed:

    Property: resourceServerProperties.tokenInfoUri
    Value: null
    Reason: Missing tokenInfoUri and userInfoUri and there is no JWT verifier key

在我使用Spring Boot1.5.x之前,这种配置工作得很好,但是在升级到Spring Boot2(并转移到spring-security-oauth2-autoconfigure库)之后,我开始遇到这个问题。

我可以通过访问上面配置中定义为keyUri: ${uaa.url}/oauth/token_key的URL来访问浏览器中的密钥,因此它显然是一个有效的URL。这里会有什么问题呢?

编辑:我在网上找到的一个解决方案是添加一个虚拟的userInfoUri值,如下所示:

代码语言:javascript
复制
security:
  oauth2:
    resource:
      userInfoUri: BUGFIX

我尝试这样做,仍然得到相同的错误。

EN

回答 2

Stack Overflow用户

发布于 2019-04-29 08:12:43

代码语言:javascript
复制
security:
  oauth2:
    client:
      clientId: xxxx
      clientSecret: xxxx
      accessTokenUri: https://www/yyy.com/.well-known/oauth-authorization-server
      userAuthorizationUri: https://www/yyy.com/.well-known/oauth-authorization-server
      scope: openid profile email
    resource:
      userInfoUri: https://www/yyy.com/.well-known/oauth-authorization-server
    sso:
      loginpath: /authorization-code/callback

在application.yaml文件中为我做了这件事。

票数 2
EN

Stack Overflow用户

发布于 2020-02-12 20:02:24

代码语言:javascript
复制
spring:
  security:
    oauth2:
      client:
        clientId: xxxxxxxxxxxxxxxxxxxx
        clientSecret: xxxxxxxxxxxxxxxxxxxxxxxx
        accessTokenUri: https:graph.facebook.com/oauth/access_token
        userAuthorizationUri: https://www.facebook.com/dialog/oauth
        tokenName:  oauth_token
        authenticationScheme: query
        clientAuthenticationScheme: form
        scope: profile email
      resource:
        userInfoUri: https://graph.facebook.com/me

我在我的application.yml中使用了它,它终于可以工作了。你只需要用spring:对其进行子级处理(这对我来说很有效)。

此外,我认为您应该使用spring-boot-starter-oauth2-client。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53583955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档