gpt4 book ai didi

asp.net-core - OpenId Connect 在 SPA 中更新 access_token

转载 作者:行者123 更新时间:2023-12-04 09:44:47 27 4
gpt4 key购买 nike

尝试在由以下组件组成的 Web 应用程序中实现 OpenId Connect

  • 身份提供者
  • 资源服务器
  • 充当客户端的单页应用程序。

  • 身份提供者和资源服务器是同一个应用程序。

    SPA 使用密码流获取 access_token并存储到 cookie 中。存储 access_token放入 cookie 中有它的 security threads ,但这是一个不同的故事。

    问题
    access_token IdP 颁发的 30 分钟后过期,SPA 需要更新 token ,而无需再次要求用户提供凭据。

    解决方案

    IdP 返回 refresh_token连同 access_token .每当 SPA 获得 401从资源服务器,它发送 refresh_token到 IdP 并获得新的 access_token背部。

    问题

    发送 refresh_token去SPA是 bad practice .

    A Single Page Application (normally implementing Implicit Grant) should not under any circumstances get a Refresh Token. The reason for that is the sensitivity of this piece of information. You can think of it as user credentials since a Refresh Token allows a user to remain authenticated essentially forever. Therefore you cannot have this information in a browser, it must be stored securely.



    建议的解决方案

    When the Access Token has expired, silent authentication can be used to retrieve a new one without user interaction, assuming the user's SSO session has not expired.



    我认为 Silent Authentication当 IdP 和资源服务器是同一个应用程序时,不适用于密码流。 access_token IdP 发布的只是可用于在资源服务器/IdP 过期后对其进行授权的信息,客户端如何说服 IdP 发布新的 access_token ? (不发送 refresh_token )

    找到 angular-oauth2-oidc使用 refresh_token 的库续订 access_token .

    在这种情况下,更新 access_token 的最佳做法/解决方案是什么? ?

    技术细节
  • 身份提供者 - ASP.NET Core + Openiddict 库。
  • SPA - AngularJs 应用程序。
  • 最佳答案

    除了之前的答案,最新的 OAuth 工作组 guidance for SPAs不再推荐使用隐式流。
    如果您有简单的共享域应用程序(单个域上的 IdP、RS 和客户端),那么您应该考虑根本不使用 OAuth。来自 the doc :

    OAuth and OpenID Connect provide very little benefit in thisdeployment scenario, so it is recommended to reconsider whether youneed OAuth or OpenID Connect at all in this case. Sessionauthentication has the benefit of having fewer moving parts and fewerattack vectors. OAuth and OpenID Connect were created primarily forthird-party or federated access to APIs, so may not be the bestsolution in a same-domain scenario.


    如果您在 SPA 中使用 OIDC/OAuth, they recommend PKCE 的身份验证代码流.

    关于asp.net-core - OpenId Connect 在 SPA 中更新 access_token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50581462/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com