Azure AD企业应用程序-识别呼叫者应用程序

时间:2020-07-17 20:02:00

标签: azure-active-directory microsoft-graph-api azure-ad-graph-api

我有一个REST API,该API使用Azure ADD应用程序注册来允许其他应用程序调用它。
在Azure门户中,我已将其注册为企业应用程序,还注册了使用者应用程序并为其分配了适当的角色。
身份验证和RBAC可以正常工作。
但是我正在使用的用例要求我识别并记录传入请求,该请求调用应用程序的名称(当我们查看企业的用户和组的列表时,在门户中显示为“显示名称”的那个)应用)。


根据互联网上的建议,我正在使用一些与身份相关的API来读取请求标头中的声明。

var provider = claimsUser.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider").Value;
var sid = claimsUser.FindFirst(ClaimTypes.NameIdentifier).Value;
OR
var sid = claimsUser.FindFirst("stable_sid").Value;

但这给了我一个GUID值,我无法将其映射到企业应用程序的任何使用者。


所有客户端均已在Azure门户中注册。
在门户中,我可以在Enterprise应用程序的“用户和组”部分中看到具有相应角色的应用程序。
就使用而言,在进行呼叫之前,客户端会根据从Azure获得的证书生成承载令牌。使用附加在请求标头上的承载令牌进行呼叫。在每个控制器之前的筛选器集中,针对Azure AD验证此承载令牌。
我想要得到的是有关该呼叫者的客户的详细信息。根据一些答复者的意见,我同意,我在上面提到的上一个呼叫中得到的Guid用于实际用户,而不是进行通话的应用本身。


任何人都可以对它有所了解..一些代码片段将真正有用。.

1 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪种身份验证流程,但是SID通常是针对已登录用户而非应用程序的。如果您的客户端应用程序正在使用客户端ID和密码,则它发送给api的返回令牌应包括应用程序注册guid。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#access-control-lists。因此,appid和iss应该给您应用程序注册的指南。使用此功能,您可以调用图形API,以标识应用程序注册的显示名称。 https://docs.microsoft.com/en-us/graph/api/application-get?view=graph-rest-1.0&tabs=http

如果您的应用程序是用户登录应用程序,并且您不想调用图形,则作为解决方法,您可以执行的另一种选择是创建应用程序角色并为其分配用户,但命名应用程序角色与某些约定,包括应用程序的显示名称。那么该名称可能会在角色声明中出现。.https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

这些是一些选项。.除了调用图形或某种方法将名称注入到令牌的其他声明中外,我不确定是否有其他方法可以获取“应用程序注册的显示名称”