这是一个非常主观的问题,我搜索了各个地方,但我想知道WebApi身份验证如何工作的真实世界示例
我在前端使用AngularJS应用程序现在,我必须连接到WebAPI但是有各种客户端那么,客户端在WEBAPI中的身份验证方式是什么
答案 0 :(得分:0)
您可以将应用程序配置为充当令牌颁发者,负责创建特定客户端允许的JWT令牌。
.Net的一个例子是Identity Server(https://github.com/IdentityServer/IdentityServer3)。它有许多示例,向您展示如何使用不同的客户端类型(https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Clients)
您可以在Identity Server中定义由客户端ID,授权类型和“重定向网址”表示的客户端。 Identity Server充当单点登录,因此当您的应用程序需要访问API时,您将使用OpenID connect重定向到Identity Server。成功登录后,Identity Server将重定向回“重定向网址”。您注册了客户端ID,在哈希片段上将access_token发送回客户端
存在一个库,可以在单页面应用程序OIDC-client中帮助解决这个问题。获得访问令牌后,您可以使用Authorization标头将其发送到您的Web api。
授权:bearer {the-jwt-token}
API将受到保护using JWT Bearer authentication,使用其中一个可用的nuget包来实现此目的。 API负责确保发送给它的JWT令牌由预期的令牌发行者签名,用于相关受众并由正确的权限颁发。
如果JWT验证通过,则验证成功,然后您可以根据令牌中的声明做出授权决策。
基本概念 - 从发卡行获取令牌,使用Authorization标头发送HTTP请求,使用JWT身份验证锁定您的API。
您可以运行自己的令牌颁发者(如Identity Server),也可以使用Azure AAD等功能为您提供此功能。使用AAD获取并运行起来非常简单。