我很难确定使用Azure Active Directory为我的dotnet核心Web API进行身份验证的最佳途径。
情况如下:
解决身份验证问题的最佳解决方案是什么?很难找到关于如何实际解决这个问题的明确文档。
感谢您的建议和帮助!
答案 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
声明他们拥有的应用权限。