-3

我想构建一个具有以下功能的 Web API:

  1. 支持 OAuthv2 认证
  2. 可以被多个客户端访问
  3. 可以限制哪个客户端可以访问哪个 API 方法(例如一些存储客户端到 API 映射的 XML 文件)

工作场景如下:

  1. 用户在通过 Azure AD 进行身份验证后登录到 Web 应用程序。
  2. Azure AD 提供了一个包含 UserDetails 和 ClientId 的令牌。
  3. 通过将 Header 中的令牌(在上述步骤 2 中收到)作为身份验证传递来调用 API:Bearer {{Token}}
  4. API 应该获取令牌,验证这是否来自有效客户端以及客户端是否有权访问此 API

如果有人可以指向示例源代码以供参考/帮助,那就太好了。

4

1 回答 1

0

我建议将此示例作为您的第一步: https ://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore

对于安全部分,您​​可以通过多种方式对其进行验证。即使这是 .NET 4.5 代码,您也可以将此示例用作参考:https ://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore-v2/blob/master/Microsoft.Identity .Web/Resource/ScopesRequiredByWebAPIExtension.cs#L13

基本上,当您在Azure Portal上注册您的 Web API 时,您可以在Expose an API菜单下添加一个范围。然后,当您创建客户端应用程序时,您可以在API 权限菜单下注册 Web API,这将使您的客户端应用程序访问令牌具有声明的注册范围。

如果您正在处理不同租户下的客户端应用程序,一种选择是将这些客户端应用程序 ID 放在一个列表中,并在您的 Web API 中间件上验证令牌颁发者是否包含在此列表中。供参考:https ://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/Microsoft.Identity.Web/Resource/AadIssuerValidator.cs

于 2019-06-26T21:41:47.500 回答