如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?

Posted

技术标签:

【中文标题】如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?【英文标题】:How to add authentication on Azure Web App using Authentication feature via Azure AD B2C? 【发布时间】:2021-07-05 05:38:36 【问题描述】:

我想为使用 Azure AD B2C 在 Azure Web 应用上运行的 Web 应用程序添加身份验证。

为此,我遵循了以下步骤:

    在 Azure AD B2C 上创建租户 添加应用注册和客户端密钥 添加用户流 从 Azure Web Apps 上的“身份验证”(左侧面板上),我选择 Microsoft 作为身份提供者,并根据前面步骤中获得的值提供配置。

但是当我访问 Azure Web Apps url 时,我并没有被重定向到登录页面,而是收到以下消息。

"code":401,"message":"An error of type 'unauthorized_client' occurred during the login process: 'AADB2C90057: The provided application is not configured to allow the 'OAuth' Implicit flow.\r\nCorrelation ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nTimestamp: 2021-04-09 10:06:00Z\r\n'"

另外,在识别提供者的编辑页面中,它说Application with ID xxxxxxxxxxxxxxxx not found in the current tenant. Tenant ID: yyyyyyyyyyyyyyyyy.

这显然意味着我在 Azure B2C 租户上注册的应用程序与 Azure Web Apps 所链接的应用程序不在同一个租户上。

我的问题是“如何通过 Azure AD B2C 使用其“身份验证”功能在 Azure Web App 上添加身份验证?”。 “身份验证”功能的 Microsoft 身份提供者是否仅支持与 Azure Web Apps 位于同一租户的客户端?

【问题讨论】:

【参考方案1】:

转到Azure App Service-->在设置下点击Authentication AppService Authentication

编辑身份验证设置并选择RequiresAuthentiction Authentication allow

然后点击添加身份提供者并从列表中选择身份提供者 Select Provider

选择身份提供者后,选择应用注册类型。 Microsoft itef 为前 2 个选项创建和注册应用程序注册 --> 如果您选择提供现有应用注册的详细信息,请按照以下步骤操作

在 AAD 中创建应用注册 点击这个链接--https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#register-an-application-with-azure-ad-and-create-a-service-principal

1.填写Application Client Id,即App Registration ID,您将在创建App Registration

2.提供可以在应用注册时创建的客户端密码

3.Issuer url 将是 -- https://sts.windows.net/tenant-id/v2.0 (替换为您在里面的租户 ID)

4.允许的令牌受众将是 -- api://Application-Client-Id(替换为您在里面的应用程序客户端 ID ) Authentication 并点击添加

5.最后的任务是添加Authentication scope 在 AAD 中转到您的 AppRegistration,然后点击 Authentication Authentication AAD

    点击添加平台并选择Web

7.选择后添加重定向URI 重定向 URI 将是 https://appservice-name.azurewebsites.net/.auth/login/aad/callback (替换为您在里面的应用服务名称) 并选择 ID 令牌 Rediret URL 点击配置

【讨论】:

【参考方案2】:

如何使用“身份验证”在 Azure Web App 上添加身份验证 通过 Azure AD B2C 提供功能?

根据您的错误,应该是您的应用程序没有启用隐式流造成的。因此,您需要在 Azure B2C 中启用它。

    转到 Azure B2C 门户>应用注册>您的应用>身份验证。

2.转到 Azure B2C 门户>应用程序(旧版)>您的应用程序。

Microsoft 身份提供者是否仅提供“身份验证”功能 是否支持与 Azure Web 应用程序位于同一租户的客户端?

是的。

【讨论】:

感谢它的工作!但是为什么我必须允许隐式流动?我可以使用访问代码授予而不是隐含流吗? @hitochan 因为您可能试图在浏览器中获取id tokenaccess token,这是隐式流的一个功能。当然你也可以使用auth code flow,这需要你在浏览器中获取授权码。 @hitochan 您好,如果发布的答案解决了您的问题,请单击复选标记将其标记为答案。这样做可以帮助其他人找到他们问题的答案。见:meta.stackexchange.com/questions/5234/… 我明白了,虽然我不记得在浏览器中更改设置以获取 id 令牌和访问令牌。无论如何,我会自己做更多的研究。非常感谢! 我确认 access_token 已启用...非常感谢您的帮助。

以上是关于如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

使用 azure AD B2C 进行 blazor web api 身份验证

无头身份验证 Azure AD b2c

我们如何在 Xamarin 表单中删除/自定义 Azure AD B2C 身份验证 webview 页面标题栏?

azure 应用服务身份验证模块是不是支持 azure ad b2c?

如何使用 Azure AD B2C 保护 Blazor Wasm 应用访问的 Azure 函数?

在 Azure AD 中创建用户之前,是不是可以使用 Azure B2C 自定义策略验证来自社交身份提供商 (iDP) 的电子邮件声明?