- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;TR我们正在使用 Microsoft Graph API 创建 AAD 应用程序。该应用程序有一些 requiredResourceAccess 条目,其中需要访问 microsoft graph。创建应用程序后,我们希望使用 appRoleAssignments 对象将角色分配给服务主体。该对象需要 resourceId,这是我尝试确定的 objectId(例如 microsoft graph)。
我们使用 Graph API 本身来获取服务主体: https://graph.windows.net/<tenant>/servicePrincipals?api-version=1.6
但不知何故 Microsoft Graph 丢失了:
Windows Azure Active Directory
Microsoft App Access Panel
Azure Classic Portal
Microsoft.SMIT
Office 365 Configure
Windows Azure Service Management API
Microsoft.SupportTicketSubmission
Azure ESTS Service
Signup
Microsoft password reset service
<小时/>
我需要确定 Microsoft Graph 服务主体的ObjectId。从新的 AAD 开始,似乎没有 Microsoft Graph 主体:
Get-MsolServicePrincipal -AppPrincipalId 00000003-0000-0000-c000-000000000000
输出
Get-MsolServicePrincipal : Service principal was not found.
如何确定 Microsoft Graph 的 ObjectId(最好使用graph.windows.net API)?
<小时/>编辑1:
按照 Fei Xu 的建议,使用以下方法通过 Rest 创建服务主体:
POST: https://graph.windows.net/{tenantId}/servicePrincipals?api-version=1.6
Authorization: Bearer {access_token}
{
"appId": "00000003-0000-0000-c000-000000000000",
"accountEnabled": true
}
给我一个400(错误请求)错误代码:
最佳答案
I need to determine the ObjectId of the Microsoft Graph Service Principal. Starting with a fresh AAD, it seems like there is no Microsoft Graph Principal:
在用户授予应用程序同意后,将创建在其他租户上注册的 Multi-Tenancy 应用程序(Microsoft Graph)的服务主体。这就是为什么您无法在新租户中找到它的原因。
要获取Microsoft Graph的对象id,您需要注册并授予Microsoft Graph的权限,如下图:
之后,Get-MsolServicePrincipal
命令应该可以为您工作(注意:授予权限后您可能需要等待几秒钟)。
更详细的服务主体,可以引用this document .
POST: https://graph.windows.net/{tenantId}/servicePrincipals?api-version=1.6
Authorization: Bearer {access_token}
{
"appId": "00000003-0000-0000-c000-000000000000",
"accountEnabled": true
}
上述 REST 使用在 Microsoft 租户上注册的应用程序 (1950a258-227b-4e31-a9cf-717495945fc2
) 来获取 token 。要切实地为 Microsoft Graph 创建服务主体,我们可以调用 New-AzureRMADServicePrincipal
命令。
这是一个适合我的 C# 代码示例:
try
{
var userName = "";
var password = "";
var securePassword = new SecureString();
foreach (char c in password)
{
securePassword.AppendChar(c);
}
// Create Initial Session State for runspace.
InitialSessionState initialSession = InitialSessionState.CreateDefault();
// Create credential object.
PSCredential credential = new PSCredential(userName, securePassword);
// Create command to Log in to Azure.
Command connectCommand = new Command("Login-AzureRmAccount");
connectCommand.Parameters.Add((new CommandParameter("Credential", credential)));
// Create command to create service principal.
Command createSP = new Command("New-AzureRMADServicePrincipal");
createSP.Parameters.Add(new CommandParameter("ApplicationId", "00000003-0000-0000-c000-000000000000"));
using (Runspace psRunSpace = RunspaceFactory.CreateRunspace(initialSession))
{
// Open runspace.
psRunSpace.Open();
//Iterate through each command and executes it.
foreach (var com in new Command[] { connectCommand, createSP})
{
var pipe = psRunSpace.CreatePipeline();
pipe.Commands.Add(com);
pipe.Invoke();
}
// Close the runspace.
psRunSpace.Close();
}
}
catch (Exception)
{
throw;
}
关于powershell - 缺少 Microsoft Graph ServicePrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43273869/
TL;TR我们正在使用 Microsoft Graph API 创建 AAD 应用程序。该应用程序有一些 requiredResourceAccess 条目,其中需要访问 microsoft grap
我利用 ARM 模板自动化了几个步骤来进行 Java/Tomcat 部署,但在通过证书自动登录方面没有取得成功。 我已使用 OpenSSL 为虚构域“project.company.com”创建了自签
我正在获取 token (我的 Gitlab 需要它作为我的运行者的环境变量)通过我的计算机上的 Azure cli 像这样: C:\Users\myuser>az ad sp create-for-
我看过帖子like this one使用 Login-AzureRmAccount 登录时,对于允许 ServicePrincipal 调用 Get-AzureRmRoleAssignment 究竟需
我有一个不在家的租户的凭据。为了访问应用程序,我需要位于主租户中,这就是为什么我只获得实际应用程序列表的一部分。但通过理解服务主体的概念,我成功地掌握了所有这些内容。 下一个问题是..我如何访问哪些用
我尝试为 Azure SQL Server 创建用户。我想使用 AzureAD 用户。 这是代码: $accessToken = $(az account get-access-token --res
使用 PowerShell,我可以在本地访问我的 Azure KeyVault、提供 secret 并返回存储的密码。我还可以通过我启动的虚拟机执行此操作。此外,我可以从 KeyVault 访问单个密
我正在构建一个 AD Multi-Tenancy 应用程序,为了获取有关租户中分配给哪个角色的数据,我需要查询需要服务主体 ID 的端点。此 ID 对于每个租户来说都是唯一的,我正在尝试动态地将其填充
我是一名优秀的程序员,十分优秀!