如何获取承载令牌以从MVC应用程序访问API

时间:2016-11-18 13:47:57

标签: identityserver3

我的用户流程如下......

  1. 用户请求受保护资源。
  2. 用户重定向到身份验证提供程序(例如Google)
  3. 用户重定向回使用cookie身份验证的ASP.Net MVC应用程序。
  4. 这很好用,并且遵循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就可以把它拿起并放入localstorage(现在猜)。

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

1 个答案:

答案 0 :(得分:0)

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