Spring security Spring security Oauth2客户端身份验证处理筛选器

Spring security Spring security Oauth2客户端身份验证处理筛选器,spring-security,oauth-2.0,google-oauth,oauth2client,Spring Security,Oauth 2.0,Google Oauth,Oauth2client,我正在研究spring-security-oauth2-1.0.3.RELEASE,试图建立一个oauth客户端,以便通过google对用户进行身份验证 我花了一段时间在这上面,仍然没有找到太多好的文章解释得很清楚 我要做的是将OAuth2ClientAuthenticationProcessingFilter放入过滤器链,如下所示: <http xmlns="http://www.springframework.org/schema/security" use-expressio

我正在研究spring-security-oauth2-1.0.3.RELEASE,试图建立一个oauth客户端,以便通过google对用户进行身份验证

我花了一段时间在这上面,仍然没有找到太多好的文章解释得很清楚

我要做的是将OAuth2ClientAuthenticationProcessingFilter放入过滤器链,如下所示:

<http xmlns="http://www.springframework.org/schema/security"
    use-expressions="true" pattern="/oauth.html" auto-config="true">
    <sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
    <custom-filter ref="oauth2ClientFilter" position="CAS_FILTER" />
    <sec:custom-filter ref="googleAuthFilter" after="CAS_FILTER" />
</http>

自定义过滤器:googleAuthFilter用于保护我的URL

读取OAuth2ClientAuthenticationProcessingFilter的源代码时,需要引用

  • OAuth2Restorations(rest模板),它引用Oauth服务器资源(关于google的信息)
  • ResourceServerTokenServices(来自Spring security oauth库提供程序包)
  • 现在我很困惑。SpringSecurityOAuth分为两部分:客户端和提供者

    既然我只是在设置Oauth客户端,为什么我需要从Oauth提供程序包中获取类的引用?

    另外,我应该如何设置ResourceServerTokenServices?现在我正在尝试使用default实现。因为DefaultTokenServices再次需要引用

  • 代币店
  • 客户端详细信息服务
  • 标记增强器
  • 到目前为止,我尝试了所有默认实现:

    • 令牌存储:InMemoryTokenStore
    • ClientDetailsService:InMemoryClientDetailsService
    • TokenEnhancer:TokenEnhancerCain
    而且它似乎不起作用


    谢谢

    我想我可以写点什么。但是您正在使用的版本非常旧,最新版本的SpringSecurityOAuth2非常容易使用,并且应用了很多文档。让我们做一些搜索:D

    查看春季“社交客户端”教程

    该教程为Facebook和Gist提供了信息。我无法理解的一点是userInfo URL,我最终不是在Google上发现的,而是在这里显示的.YML文件数据中发现的:

    本地复制(本着SO实践的精神,提供的不仅仅是URL
    :-)
    ):

    oauth2:
    客户:
    客户ID:
    客户机密:
    accessTokenUri:https://www.googleapis.com/oauth2/v4/token
    userAuthorizationUri:https://accounts.google.com/o/oauth2/v2/auth
    clientAuthenticationScheme:表单
    范围:
    -openid
    -电子邮件
    -侧面图
    资源:
    用户信息URI:https://www.googleapis.com/oauth2/v3/userinfo
    首选令牌信息:true
    
    希望这对你有帮助(我花了一段时间才找到这一切)

    另外,我有一个应用程序,它使用Spring Boot OAuth2安全性成功地对Google进行了身份验证——不要放弃希望!我目前缺少的是一种方法来解包我得到的数据,以确定用户的谷歌电子邮件地址,用于白名单-请参阅下面的SO链接:


    您找到解决方案了吗?
    oauth2:
        client:
          clientId: <Client ID from google developer console>
          clientSecret: <Client Secret from google developer console>
          accessTokenUri: https://www.googleapis.com/oauth2/v4/token
          userAuthorizationUri: https://accounts.google.com/o/oauth2/v2/auth
          clientAuthenticationScheme: form
          scope:
            - openid
            - email
            - profile
        resource:
          userInfoUri: https://www.googleapis.com/oauth2/v3/userinfo
          preferTokenInfo: true