Azure AD应用程序-与用户连接的客户端机密

时间:2020-03-26 23:03:44

标签: azure azure-active-directory azure-functions azure-function-app

请以任何方式在Azure AD中的应用程序和具有客户端密码的用户之间建立关系。

我的用例。用户要求使用客户机密(如守护程序)请求令牌,然后调用我的Web api并验证此令牌。令牌有效,但是没有有关调用它或注册应用程序的用户的信息。用户通过API(https://docs.microsoft.com/en-gb/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#get-a-token)获得令牌

当用户要求进行令牌交互时,一切正常。

我尝试使用有关谁创建了应用程序的信息,但是当用户是管理员时,Azure AD不会设置它。

有什么方法可以使用将与某些用户连接的守护进程吗? 有什么地方可以在Azure AD中保存这种关系?

我的想法是,每个想要使用我的Web api作为守护进程的用户都创建他的应用程序并连接到我的Web api,后者使用他的应用程序进行验证。应用程序创建者和用户之间的关系就足够了。但是,当我删除用户并且他仍然具有客户机密时,他可以访问。我不想使用他的用户名和密码,因为它将被保存在不同的计算机上,并且保存得不够。

如果您还有其他问题,请随时提出! 谢谢你的任何想法。

1 个答案:

答案 0 :(得分:0)

对于这种情况,您的应用程序应具有App Role,其中allowedMemeberTypes具有Application,并且如文档中所述,这将显示为对其他应用。

因此,API的使用者必须将此应用程序权限添加到其后台驻留程序应用程序(需要管理员同意)。这将在内部触发一个流,该流将创建一个服务主体(如应用程序的用户角色),并将其作为用户添加到您的应用程序中(您应该能够在Enterprise Applications > (Your API) > Users and Groups下看到它)。

当您想拒绝该守护程序访问您的API时,您只需要撤销最初提供的管理员同意即可。

我相信您甚至可以使用Microsoft Graph APIs来自动执行此过程。