使用证明 jwt 使用 Graph 客户端 Sdk 添加服务主体

Posted

技术标签:

【中文标题】使用证明 jwt 使用 Graph 客户端 Sdk 添加服务主体【英文标题】:Add service principal using Graph client Sdk using proof jwt 【发布时间】:2019-11-19 04:24:48 【问题描述】:

我需要使用现有密钥凭据之一将密钥凭据添加到 Azure Active Directory 应用程序。这里解释了它的 Api 操作。 https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/functions-and-actions#addkey-add-a-keycredential-for-an-application--

按照说明,我使用现有的密钥凭证来签署 jwt 证明,它工作正常。

我需要在 Active Directory Graph 客户端 sdk 中使用类似的功能。 https://www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient/

ActiveDirectoryClient.ServicePrincipals.AddServicePrincipalAsync 方法不接受证明输入。目前,如果我只调用一个身份验证令牌,它会说“没有足够的特权”。

【问题讨论】:

【参考方案1】:

您包含的 nuget 包的最后更新日期为 10-17-2016。

根据该 Nuget 包中包含的示例:

https://github.com/Azure-Samples/active-directory-dotnet-graphapi-web

https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console

两者都已存档。这个链接的库既不维护也不支持。我的建议是转而使用 ADAL,以便您可以对 AAD Graph API 进行 http 调用。

更受欢迎的选项是 Microsoft Graph,因为 Microsoft 是 朝着在 Microsoft Graph 下拥有所有 api 的方向发展。和 最好转移到 MSAL,因为那是将要使用的库 继续前进。

但问题是 addkey 尚不支持 微软图表。请参阅此处了解 Microsoft 图表中的差异 和当前的 AAD 图表。这个想法是会有平价 两者之间随着时间的推移。

有关使用 ADAL 库调用 Microsoft Graph 的示例,请参阅以下示例:https://github.com/FrankHu-MSFT/ADAL-.NET-Console-Application 请注意,您的设置将相似,但唯一的区别是您将代表 AAD Graph API 获取访问令牌并相应地调用 AAD Graph API。

有关调用 Microsoft Graph API 的更多最新 MSAL 示例,请在此处查看示例:https://github.com/microsoftgraph/aspnet-snippets-sample

由于 ADAL 和 AAD Graph API 都在变老,因此建议尽可能转向 Microsoft Graph API 和 MSAL。

【讨论】:

以上是关于使用证明 jwt 使用 Graph 客户端 Sdk 添加服务主体的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JWT 通过 NodeJS 客户端库访问 Google Directory (Admin SDK)?

如何证明 JWT 是不是有效并且是不是真的来自 Microsoft?

Microsoft Graph JavaScript SDK 3.0.0 正式发布

Microsoft Graph JavaScript SDK 3.0.0 正式发布

如何阻止用户使用 JWT 创建自定义 POST 请求?

尝试使用 Graph API (Facebook C# SDK) 更新 Facebook 事件