【发布时间】:2020-02-15 12:08:01
【问题描述】:
在本地应用程序中,我们尝试访问我们在 Azure 中作为私有应用程序托管的 API。我们通过 AAD 为用户分配角色,并且角色在应用程序清单中定义
"appRoles": [
...
{
"allowedMemberTypes": [
"User",
"Application"
],
"description": "Read Only All",
"displayName": "Read Only All",
"id": "***",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "ReadOnlyAll"
}
],
我们已经创建了客户端密码,虽然我们可以按照MSAL client credential flows 上的文档连接到公共应用程序,但是这样做我们失去了分配角色的能力。此外,我可以连接到Authenticating to Azure AD in daemon apps with certificates 之后的私有应用程序,但我们收到一条错误消息,指出客户端应用程序没有分配给服务应用程序的角色。所以在这一点上,我们不知道如何从 Azure 获取令牌,并分配给客户端应用程序的角色。
没有直接的方法(据我们所知)可以通过证书和机密、API 权限或授权的客户端应用程序将客户端应用程序角色分配给私有应用程序。
总而言之,我的问题是是否可以将角色分配给本地客户端应用程序,该应用程序从 Azure 上托管的服务应用程序读取数据。
感谢您的帮助!
【问题讨论】:
-
您无法添加应用权限?添加所需应用权限的选项是否灰显?
-
@juunas 抱歉,您必须说得更具体一些,我不知道您指的是哪个部分。在企业应用程序 > 用户和组中,无法将角色分配给客户端密码。 Azure 广告 > 应用注册下的 API 权限不提供将角色分配给委派应用程序的方法,并且应用程序权限不可用
-
听起来您的应用已注册为公共客户端?您的本地应用是什么类型的应用?
-
@juunas 应用程序注册为私有客户端,本地应用程序是部署到 IIS 的 .Net 应用程序。您知道是否可以将角色分配给使用私有应用程序已知的客户端密码的应用程序?是否通过 Azure 广告 > 应用注册 > 我的 API > 应用程序权限来引用并将角色分配给应用程序?
-
是的,应用权限在后台被称为应用角色。那是你应该做任务的地方。
标签: .net azure authentication oauth-2.0 msal