【问题标题】:How to get a bearer token to access an API from an MVC application如何获取不记名令牌以从 MVC 应用程序访问 API
【发布时间】:2016-11-18 23:10:44
【问题描述】:

我的用户流程如下...

  1. 用户请求受保护的资源。
  2. 用户重定向到身份验证提供商(例如 Google)
  3. 用户重定向回使用 cookie 身份验证的 ASP.Net MVC 应用程序。

这很好用,按照 IdentityServer 示例中的 MVC 示例应用程序,我可以看到我的用户的声明列表。

所以我的应用程序的主页是使用 MVC 视图呈现的,我还有其他通过资源授权授权的资源,这很好用。

我的应用程序的下一部分是 API。假设它是api.domain.com/stockquote

这应该只能由我的应用程序的授权用户使用,而不是公开可用。

我已经成功地使用 Identity Server 制作了一个 Angular JS 应用程序,并且了解当返回令牌时,我能够从 URI 中获取 /id_token 的值,将其存储在 localstorage 中,然后使用它来形成授权标头对于 API,例如Authorization=Bearer {token} 。再次运行良好。

但是,现在我已通过 MVC 应用程序的身份验证,如何获取此令牌并将其放入本地存储,以便为我的 API 调用创建标头?

  • 我可以从cookie中提取它吗?

  • 在 HTML 流中输出它是不是一个好主意,以便 JS 可以将其拾取并放入本地存储(现在猜测)。

  • 我可以使用令牌端点以某种方式获取此令牌吗?

【问题讨论】:

    标签: identityserver3


    【解决方案1】:

    处理此问题的一种方法可能是更改您的身份验证方式。不是在服务器端处理 MVC 中的回调,而是在 JavaScript 中处理它。然后令牌可供您存储在本地存储中。如果您也在使用令牌的服务器端发出请求,这可能是不可能的。

    【讨论】:

    • 有趣,如果我设置了 MVC 应用程序。 cookie 身份验证但在 JS 中处理回调会起作用吗?这就是 MVC 应用程序。获取 cookie 但我在查询字符串中也有令牌用于本地存储?
    • 回发将转到可以包含 JavaScript 的页面。因此,您可以根据需要在服务器端和 JavaScript 端处理请求。
    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 2021-09-05
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多