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

时间:2018-05-06 04:58:33

标签: azure .net-core asp.net-web-api2 azure-active-directory

我很难确定使用Azure Active Directory为我的dotnet核心Web API进行身份验证的最佳途径。

情况如下:

  • 在Azure Active Directory中创建的应用程序,Web API对用户进行身份验证。它有多个与之关联的应用程序角色。
  • 需要对Web API进行身份验证的守护程序应用程序。

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

感谢您的建议和帮助!

1 个答案:

答案 0 :(得分:2)

您的守护程序应用程序需要使用应用程序权限(具有成员类型=应用程序的应用程序角色)来调用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的应用程序注册(属性刀片,应用程序ID URI)中找到URI。

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