当前位置:  开发笔记 > 编程语言 > 正文

Azure AD应用程序 - 需要角色分配+为应用程序添加角色分配?

如何解决《AzureAD应用程序-需要角色分配+为应用程序添加角色分配?》经验,为你挑选了1个好方法。

我有一个MVC Web应用程序(WebAPI + Angular)部署到Azure作为Web应用程序(而不是API应用程序),设置为使用设置 - >身份验证/授权 - > AAD - > Express进行保护.这创建了一个与Web App同名的AD应用程序,并且作为普通的Web用户(在目录中,使用OAuth),它按预期工作.

但是我也有外部自动化需要直接调用WebAPI控制器,因此我需要以编程方式获取Bearer令牌以传递这些请求.

当"需要访问APP的用户分配"==否时,这一切都正常.但这还不够,因为目录中的每个人都不应该访问此应用程序.

翻转该开关会导致错误:

应用程序"AppId"未分配给应用程序"AppId"的角色.

正在使用的代码:

    var aadLoginUri = "http://login.microsoftonline.com/{0}";
    var tenantId = "[xxx].onmicrosoft.com";
    var authority = String.Format(CultureInfo.InvariantCulture, aadLoginUri, tenantId);
    var clientId = ConfigurationManager.AppSettings["ClientId"];
    var clientSecret = ConfigurationManager.AppSettings["ClientSecret"];

    var authContext = new AuthenticationContext(authority);
    ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
    AuthenticationResult authResult = authContext.AcquireToken(clientId, clientCredential);

如何为应用程序添加角色分配?
(而不是用户)

我尝试使用"其他应用程序的权限"部分,但无法将应用程序添加到自身.为了查看这是否可以解决另一个应用程序的问题,我继续创建了一个,并且能够添加应用程序并将委托权限设置为"访问[应用程序名称]".但与以前一样,这仅适用于访问应用程序不需要用户分配的情况.然后AcquireToken()抛出相同的异常.

看起来这个问题可以通过将我们的API与Angular应用程序分离来解决,将API作为API应用程序(带有网关)托管,但目前这不是一个选项.此外,本文还说这个新的Auth功能" 替换了大多数应用程序的App Service网关 ",这篇博文在11月宣布该功能说" 我们建议网络和移动应用程序使用此功能而不是App Service网关 ",所以我想知道如果这还没有进入UI并且可能通过应用程序清单(尝试,失败),graph/service-mgmt api,powershell等添加应用程序角色分配.



1> fikkatra..:

关键是在清单中定义正确的appRoles(使用正确的allowedMemberType).

在Azure门户中,配置以下内容:

在需要访问的资源中,打开清单("App Registrations"刀片).在appRoles数组中,添加两个角色:

allowedMemberType'Application'之一

allowedMemberType'User'之一

保存清单.

接下来,在需要访问资源的客户端应用程序中:

浏览到" 必需权限 "并点击"添加"

搜索您要访问的资源

在"启用访问"部分的"应用程序权限"下,选择刚刚配置的角色

保存并点击"授予权限"

要配置用户权限:

浏览到"企业应用程序"刀片

选择"所有应用程序",然后选择正确的应用程序

点击"用户和群组"

将用户分配给角色

在"属性"部分中,保留"需要用户分配?" 复选框已启用 这将仅限制对已配置用户的访问.

现在,您可以作为用户和应用程序访问资源.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有