当前位置: 首页 > 知识库问答 >
问题:

Azure AD图形-使用应用程序凭据流审批创建

施飞驰
2023-03-14

我正在使用azure AD Graph API在azure应用程序中创建一个新角色。我所做的是使用以下代码从azure获取访问令牌:

ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
AuthenticationContext authenticationContext = new AuthenticationContext(aadInstance + tenantID);
AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(graphResourceID, clientCredential);
return authenticationResult.AccessToken;

并使用以下代码创建角色:

//Fetch application Data from azure AD
IApplication application = await activeDirectoryClient.Applications.GetByObjectId(RoleModel.ApplicationID).ExecuteAsync();
AppRole NewRole = new AppRole
{
    Id = CurrentRoleID,
    IsEnabled = true,
    AllowedMemberTypes = new List<string> { "User" },
    Description = RoleModel.RoleDescription,
    DisplayName = RoleModel.RoleName,
    Value = RoleModel.RoleName
 };
 application.AppRoles.Add(NewRole as AppRole);
 await application.UpdateAsync();

我还向Microsoft Graph API授予了所有应用程序权限,而不是从Azure portal委派的权限。但我得到了这个错误:

访问令牌:从ADzure AD返回的访问令牌

共有1个答案

陶宏浚
2023-03-14

问题:那么,是否可以使用应用程序凭据流在应用程序中创建一个新的角色?如果是的话,我是不是漏了什么?

对您的一般问题的回答是肯定的,您可以使用Azure AD Graph API和客户机凭据流向应用程序的角色添加一个新角色。

工作代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.ActiveDirectory.GraphClient;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

namespace AddAzureADApplicationRoles
{
    class Program
    {
        static void Main(string[] args)
        {
            ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/{myTenantId}"),
                async () => await GetTokenForApplication());

            //Fetch application Data from azure AD
            IApplication application = activeDirectoryClient.Applications.GetByObjectId("{MyAppObjectId}").ExecuteAsync().GetAwaiter().GetResult();

            AppRole NewRole = new AppRole
            {
                Id = Guid.NewGuid(),
                IsEnabled = true,
                AllowedMemberTypes = new List<string> {"User"},
                Description = "My Role Description..",
                DisplayName = "My Custom Role",
                Value = "MyCustomRole"
            };

            application.AppRoles.Add(NewRole as AppRole);
            application.UpdateAsync().GetAwaiter().GetResult();
        }

        public static async Task<string> GetTokenForApplication()
        {
            string TokenForApplication = "";

                AuthenticationContext authenticationContext = new AuthenticationContext(
                    "https://login.microsoftonline.com/{MyTenantId}",
                    false);

                // Configuration for OAuth client credentials 

                    ClientCredential clientCred = new ClientCredential("{AppId}",
                        "{AppSecret}"
                        );
                    AuthenticationResult authenticationResult =
                        await authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientCred);
                    TokenForApplication = authenticationResult.AccessToken;                

            return TokenForApplication;
        }
    }
}

我认为您已经授予了Microsoft Graph API上的应用程序权限,而不是Azure AD Graph API所需的权限。

设置应用程序所需的权限时,请在“选择API”对话框中,确保选择“Windows Azure Active Directory”,而不是“Microsoft Graph”。接下来我会给出更多细节的截图。

授予所需权限的步骤

 类似资料:
  • 当有新的流程需要我审批,消息界面会有推送,也可以从审批轻应用中找到并操作。 1.手机版 使用方法:审批-我审批的-待我审批的-找到流程-操作   2.电脑版 目前电脑版审批操作与手机版完全一致

  • 下图说明了整个系统的数据流程: index.php 文件作为前端控制器,初始化运行 CodeIgniter 所需的基本资源; Router 检查 HTTP 请求,以确定如何处理该请求; 如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程; 在加载应用程序控制器之前,对 HTTP 请求以及任何用户提交的数据进行安全检查; 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;

  • 我有一个导入jar的app引擎app。在那个罐子里,我用的是GoogleClientSecrets。load()以加载client\u机密。用于使用BigQuery进行身份验证的json文件。显然,当我在localhost上部署应用程序时,应用程序引擎不喜欢我从磁盘上的某个位置读取文件。我假设,如果我把凭据放在WEBINF文件夹中,它会工作,但还没有测试,但这样任何人都可以轻松访问该文件。哪里是放

  • 我当前正在尝试访问云API,但收到以下错误:

  • 您可在ES后台审批流模块设置审批流,目前企业版支持两种审批流程。 用车审批流 如果企业需要先审批后用车,您可以创建【需审批用车】或【差旅】制度,并且在创建时选择一条审批流,当员工提交用车申请时,必须按照您选择的审批流进行审批,审批通过后才能用车。 报销审批流 如果企业需要统一开票,您可以在企业设置中开启【企业审批报销】,开启后员工报销车费必须先申请,并且按照您设置的审批流进行审批,审批通过的行程可

  • 我正在工作一个AWS弹性Beanstalk应用程序,上传文件到AWS S3桶。Beanstalk应用程序是一个.NET Core Web API应用程序,我遵循了本指南(http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html),并且在磁盘上有一个凭据文件,用于本地开发,其中有我的共享访