WebApi-Angularjs Web App 的 Thinktecture Identity Server 3 授权流程

Thinktecture Identity Server 3 authorization flow for WebApi-Angularjs Web App

我有一个关于在后端用 Asp.Net Web Api 编写并且有一个 angularjs 客户端的 Web 应用程序中授权的最佳标准架构的问题。

根据我之前所见,"Resource Owner Credentials" 流程是在这种情况下使用的流程,其中 webapp 会将用户的凭据发送到服务器并获取访问令牌(和刷新令牌),并且然后使用拦截器,对后端 api 的每次调用都将在 header 中包含访问令牌。

但是,我最近看到关于它不是一个好主意的争论,因为它将用户的凭据提供给客户端应用程序。

当您有 javascript 客户端直接调用 WebApi 时,最佳流程是什么?使用 Identity Server 保护它的最佳方法是什么?

您还可以考虑隐式流或混合流,当客户端应用程序 (angular) 将用户重定向到登录 openid 身份提供程序 (Identity Server) 并在成功验证后,此 returns 一个 access/identity 令牌,可用于对 API 的后续调用。

在这种情况下,客户端应用程序永远不会触及客户端凭据,它始终必须管理令牌。

另见 https://www.scottbrady91.com/OpenID-Connect/OpenID-Connect-Flows