使用用户名/密码

时间:2016-07-14 15:21:16

标签: api authentication single-page-application identityserver3

我正在尝试使用IdentityServer3但是这些流程似乎都不适合我想要实现的目标

  1. 仅以HTML和Javascript编写的单页应用程序(SPA)尝试访问受保护的API端点(在本例中为ASP.NET Web API v2)。
  2. 返回HTTP 401,因为API端点受保护
  3. SPA直接从IdentityServer请求令牌传递用户名和密码
  4. IdentityServer3传回授权令牌,其中包含用户名和与用户名相关的声明
  5. SPA再次尝试访问API端点,但在标头中传递承载令牌并允许访问
  6. 最后,我想实现刷新令牌,以便SPA不必再次提交用户名和密码。
  7. 我看过的流程:

    隐式流 - 将重定向作为一种手段来验证发出请求的人。我想直接使用IdentityServer进行身份验证。此外,使用IdentityServer3登录后,页面会显示一个同意页面,询问用户是否要共享此信息。由于这是仅适用于相关API的内部登录,因此这似乎不合适。

    资源所有者流程 - 我的理解是这个流需要一个client_secret,这是不可能在SPA中保密的

    也许我使这比需要的更复杂,但我发现的所有例子似乎都没有遵循我上面概述的步骤。是否可以使用IdentityServer3?

1 个答案:

答案 0 :(得分:1)

如果客户端应用收集用户名/密码,那么您将使用资源所有者密码流。但是,通过使用该流程,您将错过单点登录以及您在IdentityServer中编码的任何其他登录工作流功能。

推荐的方法是隐式流,您可以在其中重定向到IdentityServer。可以禁用IdentityServer显示的同意屏幕(这是每个客户端的配置设置)。