【问题标题】:How does WebApi Authentication works for all clients? [closed]WebApi 身份验证如何适用于所有客户端? [关闭]
【发布时间】:2017-05-03 20:54:58
【问题描述】:

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

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

【问题讨论】:

  • 使用不记名令牌。
  • 感谢 rawel,但客户可以在任何他们只是访问 URL 的地方所以,webapi 如何进行身份验证。如果你能给我任何链接或参考,那就太好了

标签: .net wcf asp.net-web-api restful-architecture


【解决方案1】:

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

这方面的 .Net 示例是 Identity Server (https://github.com/IdentityServer/IdentityServer3)。它有许多示例向您展示它如何与不同的客户端类型一起工作 (https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Clients)

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

在单页应用程序中存在一个库来帮助解决此问题,OIDC-client。获得访问令牌后,您可以使用 Authorization 标头将其发送到您的 Web api。

授权:持有者 {the-jwt-token}

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

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

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

您可以运行自己的令牌颁发者,例如 Identity Server,也可以使用 Azure AAD 等工具为您提供此功能。使用 AAD 启动和运行某些东西非常简单。

【讨论】:

  • 感谢 Dylan 提供此解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 2015-04-08
  • 2016-05-02
  • 2018-10-20
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多