【问题标题】:How to call a azure function which is secured by AAD如何调用由 AAD 保护的 azure 函数
【发布时间】:2018-09-01 02:05:33
【问题描述】:

我们要调用 Azure AD 为其启用身份验证的 azure 函数。我们想从外部工具调用此函数,可能会以自动方式使用 http,而不是让用户获得登录提示然后登录。

知道怎么做吗?

谢谢 吉里什

【问题讨论】:

    标签: authentication azure-active-directory azure-functions


    【解决方案1】:

    因此,通常 - 要调用受 AAD 保护的 Azure Functions,您必须找到一种方法来获取令牌,以便您进行身份验证。如果您没有这样做,您将获得 HTTP 403 并被重定向(或接收重定向链接)以登录。

    如果您想自动执行此操作,我假设您需要在租户中创建一个服务主体:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal

    然后你必须以某种方式获取访问令牌 - 要么使用裸 HTTP 请求:

    POST https://{tenant}/oauth2/v2.0/token?client_id={client-id}
    &scope={scope}
    &code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
    &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
    &grant_type=authorization_code
    &client_secret=JqQX2PNo9bpM0uEihUPzyrh
    

    这里有描述:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-get-jwt-token

    或者使用Microsoft.IdentityModel:

    AuthenticationContext = new AuthenticationContext("https://login.microsoftonline.com/" + Tenant);
    Credential = new ClientCredential(clientId, clientSecret);
    
    var result = await AuthenticationContext.AcquireTokenAsync("https://graph.windows.net", Credential);
    return result.AccessToken;
    

    然后,您必须为每个请求添加一个 Bearer 令牌,这将允许您在没有登录提示的情况下进行身份验证。

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 2021-08-04
      • 2022-10-07
      • 2019-03-10
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2021-04-07
      相关资源
      最近更新 更多