使用 username/password 通过 Javascript 直接从 IdentityServer3 请求令牌
Requesting token directly from IdentityServer3 via Javascript using username/password
我正在尝试使用 IdentityServer3,但 none 的流程似乎符合我想要完成的任务
- 仅在 HTML 和 Javascript 中编写的单页应用程序 (SPA) 尝试访问受保护的 API 端点(ASP.NET Web API v2 in这种情况)。
- 返回 HTTP 401,因为 API 端点受到保护
- SPA 直接从传递用户名和密码的 IdentityServer 请求令牌
- IdentityServer3 传回授权令牌,其中包括用户名和与用户名关联的声明
- SPA 再次尝试访问 API 端点,但在 header 中传递了承载令牌并被允许访问
- 最后,我想实现刷新令牌,这样 SPA 就不必再次提交用户名和密码。
我看过的流量:
隐式流 - 涉及到 IdentityServer 的重定向,作为验证发出请求者身份的一种方式。我想直接使用 IdentityServer 进行身份验证。同样在登录后使用 IdentityServer3,页面会显示一个同意页面,询问用户是否要共享此信息。由于这是仅适用于有问题的 API 的内部登录,这似乎不合适。
资源所有者流程 - 我的理解是此流程需要 client_secret,这在 SPA
中是不可能保密的
也许我使这比需要的更复杂,但我发现的示例中 none 似乎遵循我上面概述的步骤。可以使用 IdentityServer3 吗?
如果客户端应用程序收集了 username/password,那么您正在使用资源所有者密码流。但是通过使用该流程,您会错过单点登录和您在 IdentityServer 中编写的任何其他登录工作流功能。
推荐的方法是重定向到 IdentityServer 的隐式流。可以禁用 IdentityServer 显示的同意屏幕(这是针对每个客户端的配置设置)。
我正在尝试使用 IdentityServer3,但 none 的流程似乎符合我想要完成的任务
- 仅在 HTML 和 Javascript 中编写的单页应用程序 (SPA) 尝试访问受保护的 API 端点(ASP.NET Web API v2 in这种情况)。
- 返回 HTTP 401,因为 API 端点受到保护
- SPA 直接从传递用户名和密码的 IdentityServer 请求令牌
- IdentityServer3 传回授权令牌,其中包括用户名和与用户名关联的声明
- SPA 再次尝试访问 API 端点,但在 header 中传递了承载令牌并被允许访问
- 最后,我想实现刷新令牌,这样 SPA 就不必再次提交用户名和密码。
我看过的流量:
隐式流 - 涉及到 IdentityServer 的重定向,作为验证发出请求者身份的一种方式。我想直接使用 IdentityServer 进行身份验证。同样在登录后使用 IdentityServer3,页面会显示一个同意页面,询问用户是否要共享此信息。由于这是仅适用于有问题的 API 的内部登录,这似乎不合适。
资源所有者流程 - 我的理解是此流程需要 client_secret,这在 SPA
中是不可能保密的也许我使这比需要的更复杂,但我发现的示例中 none 似乎遵循我上面概述的步骤。可以使用 IdentityServer3 吗?
如果客户端应用程序收集了 username/password,那么您正在使用资源所有者密码流。但是通过使用该流程,您会错过单点登录和您在 IdentityServer 中编写的任何其他登录工作流功能。
推荐的方法是重定向到 IdentityServer 的隐式流。可以禁用 IdentityServer 显示的同意屏幕(这是针对每个客户端的配置设置)。