WebApi 身份验证如何适用于所有客户端?

How does WebApi Authentication works for all clients?

这是一个非常主观的问题,我搜索了很多地方,但我想知道 WebApi 身份验证如何工作的真实示例

我在前端使用 AngularJS 应用程序,现在,我必须连接到 WebAPI,但是有各种客户端 那么,客户端在 WEBAPI 中进行身份验证的方式是什么

您可以将应用程序配置为充当令牌颁发者,负责创建允许特定客户端使用的 JWT 令牌。

一个 .Net 示例是 Identity Server (https://github.com/IdentityServer/IdentityServer3). It has a number of examples that show you how this works with different client types (https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Clients)

您在 Identity Server 中定义由客户端 ID、授权类型和 'redirect url' 表示的客户端。 Identity Server 充当单点登录,因此当您的应用程序需要访问 API 时,您将使用 OpenID connect 重定向到 Identity Server。成功登录后,Identity Server 将重定向回您为客户端 ID 注册的 'redirect url',在哈希片段

上将 access_token 发送回客户端

存在一个库来帮助在单页应用程序中解决这个问题,OIDC-client。获得访问令牌后,您可以使用授权 header 将其发送到您的网站 api。

授权:不记名{the-jwt-token}

API 将得到保护 using JWT Bearer authentication,使用一个可用的 nuget 包来实现这一点。 API 负责确保发送给它的 JWT 令牌由预期的令牌发行者签名,面向相关受众并由正确的机构发行。

如果 JWT 验证通过,则身份验证成功,然后您可以根据令牌中存在的声明做出授权决定。

这是基本概念 - 从颁发者处获取令牌,使用授权 header 发送 HTTP 请求,使用 JWT 身份验证锁定您的 API。

您可以 运行 您自己的令牌颁发者,例如 Identity Server,或者使用类似 Azure AAD 的东西来为您提供此功能。使用 AAD 启动和 运行ning 非常简单。