【问题标题】:Is exposing client secret a threat for implicit grant type in oauth 2?暴露客户端机密是否对 oauth 2 中的隐式授权类型构成威胁?
【发布时间】:2019-06-13 20:33:39
【问题描述】:

我有一个应用程序需要实现 oauth 2 以保护其余 API。简单的流程是当用户登录时,他们应该有权访问一些受保护的资源(根据他们的角色)。

我将使用 Angular 7 作为前端。

根据此图,我需要对单页应用程序使用隐式授权。 现在我继续搜索,发现https://www.devglan.com/spring-security/spring-boot-oauth2-angular

API Name - Login
Method - POST
URL - oauth/login
Header - 'Authorization': 'Basic ' + btoa('devglan-client:devglan-secret')
Body - {'username' :'admin ',
      'password' :'admin',
    'grant_type':  'password' }
Content-type: application/x-www-form-urlencoded

现在我对这种方法唯一关心的是。

我。为什么这个客户 ID 和客户秘密以角码显示?客户的秘密不应该保密吗?

【问题讨论】:

    标签: java angular spring-boot spring-security-oauth2


    【解决方案1】:

    我们不需要任何密钥来实现 js 应用程序中的隐式授权流程。

    您可以看到以下 http url 示例,它需要一些东西,例如 client_id、redirect_uri 等。

    我们将在redirect_uri 的url 片段中获取访问令牌,该令牌会验证您访问受保护资源的权限。但是,范围参数对于确定资源及其权利也很重要。

    Http 请求 URI

    https://YOUR_AUTH0_DOMAIN/authorize?
      audience=YOUR_API_AUDIENCE&
      scope=YOUR_SCOPE&
      response_type=YOUR_RESPONSE_TYPE&
      client_id=YOUR_CLIENT_ID&
      redirect_uri=https://YOUR_APP/callback&
      nonce=YOUR_CRYPTOGRAPHIC_NONCE&
      state=YOUR_OPAQUE_VALUE
    

    我强烈建议即使对于 js 应用程序也使用带有 PKCE 的授权代码授予,因为访问令牌容易受到各种安全风险的影响。使用 PKCE,攻击者需要解决难题(代码挑战)才能获得访问令牌。

    【讨论】:

    • 你说的是openid和okta之类的吗?
    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 2013-01-11
    • 2018-11-02
    • 2015-04-01
    • 1970-01-01
    • 2019-03-11
    • 2017-04-16
    相关资源
    最近更新 更多