服务主体如何登录到我的Azure应用程序服务?

服务主体如何登录到我的Azure应用程序服务?,azure,authentication,azure-web-app-service,Azure,Authentication,Azure Web App Service,我已经通过以下方式在我的应用程序服务中启用了身份验证:无论何时访问我的网站端点,我都会被重定向到Azure AD登录页面,并且在输入凭据时能够继续。如何使用服务主体凭据登录?登录页面显然不接受客户端id。是否应该填充某些标头以使用服务主体凭据发出成功的请求 非常感谢您的见解。您是正确的,交互式身份验证流(如登录页)不适用于应用程序和服务主体,它们仅适用于最终用户 关于如何进一步开展工作的几个要点: 使用非交互式身份验证流,如获取令牌 您可以根据您的平台使用相关的ADAL库,或者直接点击Azure

我已经通过以下方式在我的应用程序服务中启用了身份验证:无论何时访问我的网站端点,我都会被重定向到Azure AD登录页面,并且在输入凭据时能够继续。如何使用服务主体凭据登录?登录页面显然不接受客户端id。是否应该填充某些标头以使用服务主体凭据发出成功的请求


非常感谢您的见解。

您是正确的,交互式身份验证流(如登录页)不适用于应用程序和服务主体,它们仅适用于最终用户

关于如何进一步开展工作的几个要点:

  • 使用非交互式身份验证流,如获取令牌

    您可以根据您的平台使用相关的ADAL库,或者直接点击Azure AD端点

    下面是一个直接访问Azure AD端点的示例。此示例使用客户机机密,也可以使用证书而不是机密,以防与您的案例相关。我在上面共享的客户端凭据授予链接中的一个示例确实显示了这一点

    POST /contoso.com/oauth2/token HTTP/1.1
    Host: login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F
    
    下面是另一个使用ADAL for.NET的示例-

    需要注意的代码的一个重要部分是

    您没有明确提到您使用的是哪个平台,所以我分享了.NET示例,因为这是我最熟悉的一个。如果您需要另一个,请参阅本Microsoft文档指南,它链接到所有受支持的不同Microsoft库,每个库都有一些相关示例

  • 从权限的角度来看,您的服务主体需要为相关的web应用程序分配
    应用程序权限
    。另一种类型的权限是
    委托权限
    ,但它们仅适用于用户

  • 当您询问要填充的标题时,它将是标准的
    Authorization
    标题。值的格式为
    承载体
    。在使用ADAL等身份验证库的情况下,该库将负责这一部分,但如果直接命中其余端点,则需要填充标头


  • 您能告诉我一些使用服务主体凭据从Azure Active directory获取令牌的smple ADAL代码吗?@user3740951当然。。我已经编辑了我的答案(第1点),以包含一个代码示例,该示例演示如何获取令牌。@user3740951多一个快速点。。请注意,我已经共享了与Azure AD v1.0端点和ADAL库相关的所有信息。。因为您下面的文档清楚地提到Azure AD v2.0(包括MSAL)还不支持Azure应用程序服务。。但在将来,无论何时支持,都应该考虑使用V2和MSAL。
    authContext = new AuthenticationContext(authority);
    clientCredential = new ClientCredential(clientId, appKey);
    AuthenticationResult result = await authContext.AcquireTokenAsync(todoListResourceId, clientCredential);