dotnet core 2 API 和守护程序应用程序中的 Azure AD 身份验证

Azure AD Authentication in dotnet core 2 API and daemon application

我正在努力确定使用 Azure Active Directory 对我的 dotnet 核心网站进行身份验证的最佳途径 API。

情况如下:

解决身份验证情况的最佳方案是什么?很难找到关于如何实际解决这个问题的明确文档。

感谢您的建议和帮助!

您的守护程序应用程序需要使用应用程序权限(成员类型为应用程序的应用程序角色)来调用 API。 您可以在此处查看如何定义它们:https://joonasw.net/view/defining-permissions-and-roles-in-aad.

例如,这是清单中的样子:

{
  "appRoles": [
  {
    "allowedMemberTypes": [
      "Application"
    ],
    "displayName": "Read all todo items",
    "id": "f8d39977-e31e-460b-b92c-9bef51d14f98",
    "isEnabled": true,
    "description": "Allow the application to read all todo items as itself.",
    "value": "Todo.Read.All"
  }
  ]
}

然后您将应用权限分配给您的守护程序应用。

之后,只需使用守护程序应用程序的客户端凭据进行身份验证即可。 以 ADAL.NET 为例,您将使用 ClientCredential + API 的资源 URI 获取令牌。 您可以从 API 的应用程序注册(属性 blade、应用程序 ID URI)中找到 URI。

然后您可以将生成的访问令牌附加到 HTTP 请求,API 可以从 appid 声明中找到调用应用程序的人,并从 roles 声明中找到什么应用程序他们拥有的权限。