使用证明 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 正式发布