如何模拟登录用户来管理其他 Azure 服务

How to impersonate logged in user to manage other Azure service

我有 webapp 可以在 ADF 中进行更改(类似于在 ADF 中部署对象)。我想根据 ADF 对用户进行身份验证。我能够检测到谁在访问网络应用程序。我得到 Azure AD Id,如 user1@company.com。我想验证同一用户是否有权访问 ADF,如果是,则生成不记名令牌以在 ADF 中进行更改(使用 rest api)或使用 SDK。

当用户登录web应用时,您可以使用下面的方式获取访问令牌,无需验证同一用户是否可以访问ADF,因为如果他没有访问权限,令牌将无法调用其余 api,他将得到 401 未经授权的错误。

1.First,确保你有 configured your web app to use Azure AD login, then navigate to the resource explorer -> 找到你的网络应用程序 -> 将 ["resource=https://management.azure.com"] 添加到 additionalLoginParams,如下所示 -> PUT

2.Navigate到门户中的Azure Active Directory -> App registrations -> 找到你的web app对应的AD App -> API permissions -> 添加权限user_impersonationAzure Service Management 如下所示。

3.Then当用户登录web app,在他同意权限后,你可以得到端点为https://webappname.azurewebsites.net/.auth/me的token,并使用token调用data factory rest api

4.Make 确保用户具有 RBAC 角色,例如Contributor 在你的 subscription/ADF 中,然后令牌将能够成功调用其余的 api。

例如,我用 Pipelines - List By Factory api 测试,它工作正常。