多个客户端 ID 弹簧安全配置

Posted

技术标签:

【中文标题】多个客户端 ID 弹簧安全配置【英文标题】:Multiple client ids spring security config 【发布时间】:2017-01-12 22:32:37 【问题描述】:

我已使用以下 application.yml 在 ios 上成功实现 Google 登录:

security:
  oauth2:
    resource:
      user-info-uri: https://www.googleapis.com/plus/v1/people/me
      prefer-token-info: true
    client:
      client-id: xxxxx.apps.googleusercontent.com
      access-token-uri: https://www.googleapis.com/oauth2/v3/tokeninfo
      client-authentication-scheme: form
      scope: email,profile

现在我需要为 android 客户端添加配置。显然我不能这样做:

security:
  oauth2:
    resource:
      user-info-uri: https://www.googleapis.com/plus/v1/people/me
      prefer-token-info: true
    client:
      client-id: xxxxx.apps.googleusercontent.com
      access-token-uri: https://www.googleapis.com/oauth2/v3/tokeninfo
      client-authentication-scheme: form
      scope: email,profile
    client:
      client-id: xxxxx.apps.googleusercontent.com
      access-token-uri: https://www.googleapis.com/oauth2/v3/tokeninfo
      client-authentication-scheme: form
      scope: email,profile

这样做的正确方法和最佳实践是什么?

【问题讨论】:

我们在同一个人@Heisenbug。我有一种感觉,需要手动配置spring security来处理多个客户端id。也许这可以帮助指导您如何自定义弹簧安全性。 github.com/techdev-solutions/trackr-backend @FrancisZabala 感谢您的回复。我尝试了以下方法:在 .yml 中,我只留下了服务器客户端 ID,一切都继续工作。现在我面临另一个问题:Android 没有自动接收 accessToken,获取它的最佳做法是什么? 我真的无法帮助您使用 android,但如果您的意思是您的 android 客户端如何使用访问令牌,您可能想知道 auth0 是如何工作的。这是他们文档的链接。 auth0.com/docs/quickstart/native/android 但是如果你想确保你的rest api很好,我还在做一些研究。 【参考方案1】:

我在Will Tran Github project application.yml这个文件中找到了你正在寻找的语法

它看起来像这样,

# OAuth2 Details
security.oauth2:
    client:
        client-id: client001
        client-secret: pwd001
        authorized-grant-types: password,authorization_code,refresh_token
        scope: read,write

---

security.oauth2:
    client:    
        client-id: client002
        client-secret: pwd002
        authorized-grant-types: client_credentials
        scope: TRUSTED

---

# /\ Dont forget this one

Ps.:查看链接以获得更好的参考。

【讨论】:

以上是关于多个客户端 ID 弹簧安全配置的主要内容,如果未能解决你的问题,请参考以下文章

如何配置弹簧安全性

仅为授权配置弹簧安全性?

在不丢失可配置端点的情况下覆盖弹簧安全执行器

弹簧反应的弹簧安全会话超时

具有自定义外部表单和弹簧安全性的 CAS 身份验证

弹簧安全 AntMatcher 不工作