我正在使用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返回的访问令牌
问题:那么,是否可以使用应用程序凭据流在应用程序中创建一个新的角色?如果是的话,我是不是漏了什么?
对您的一般问题的回答是肯定的,您可以使用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),并且在磁盘上有一个凭据文件,用于本地开发,其中有我的共享访