Azure 是否可以匿名调用API应用程序并自动将浏览器重定向到广告登录页面?

Azure 是否可以匿名调用API应用程序并自动将浏览器重定向到广告登录页面?,azure,azure-web-app-service,azure-api-apps,azure-api-management,Azure,Azure Web App Service,Azure Api Apps,Azure Api Management,在最近在伦敦举行的微软云路演中,关于应用程序服务的一次会谈中出现了一件事,那就是使用AAD B2C进行身份验证 当前可以添加Azure AD作为API应用程序的身份验证: 从没有授权标头的基于浏览器的web应用程序调用此API应用程序将导致302重定向,然后立即出现401响应 在云事件中提到,可以从web应用匿名调用API应用程序,并让azure应用程序服务处理重定向到AAD登录页面,在成功登录时获取令牌,然后将调用传递到API应用程序并返回数据 然而,我很难想象,如果呼叫web应用程序不负责

在最近在伦敦举行的微软云路演中,关于应用程序服务的一次会谈中出现了一件事,那就是使用AAD B2C进行身份验证

当前可以添加Azure AD作为API应用程序的身份验证:

从没有授权标头的基于浏览器的web应用程序调用此API应用程序将导致302重定向,然后立即出现401响应

在云事件中提到,可以从web应用匿名调用API应用程序,并让azure应用程序服务处理重定向到AAD登录页面,在成功登录时获取令牌,然后将调用传递到API应用程序并返回数据

然而,我很难想象,如果呼叫web应用程序不负责处理重定向,如何实现这一点。通常,您将通过客户端上的AAD获取承载令牌并将其作为API请求的授权标头发送,从而处理来自API的401响应

我已经在Azure网站和其他网站上查看了许多示例,所有这些示例都在处理客户端web应用程序中的登录/获取令牌


这可能吗

更新我刚刚意识到(正如@Darrel Miller所指出的那样),您并不真的想允许用户将凭据放入

我唯一不清楚的是,你想在哪里为AAD提供证书?你到底想完成什么

更重要的是,如果根本没有用户交互,为什么要使用AAD呢。 如果你想要的只是一个安全的连接,那么你可以在不启用AAD的情况下使用web api的标准应用程序密钥。而且只要将MS_应用程序密钥添加到你的头文件中就可以了

正如您在评论中所描述的,您有一个webclient,它尝试执行请求并获取302,这就是为什么我最初的回答不是您将使用ADAL。但现在我深入了解了您想要的内容,可能您想要使用的是KurveJS:

而且它有AAD应用程序模型v2和活动Directoy B2C

这使得使用广告B2C策略添加第三方身份提供商(如Facebook)和注册/登录/个人资料编辑体验变得容易

您可以在此处阅读更多信息:


你是说这个吗??

只需使用ADAL nuget包来处理调用

您可以从以下帖子中阅读:

一旦执行命中对AcquireToken的调用,您将获得如图8所示的身份验证对话框。ADAL负责联系正确的端点,并在弹出对话框中呈现服务器提供的身份验证体验,而无需编写任何UI代码


我希望这对你有用!

Hi Declan,你能澄清一下你的设置吗?你的web API是如何调用的?它是由浏览器调用的还是由你的web应用程序中的某些后端代码调用的?我在Azure中有一个API应用程序,我已将其导入API管理。我正在调用API的API管理uri(看起来像)来自Web应用程序中的C#WebClient。我得到了302重定向响应,API将重定向到AAD登录页面,但我应该如何从那里继续?谢谢,我不认为这是可能的。我认为来自Web客户端的重定向响应必须使用MVC cont的响应手动传播回客户端OP正在尝试从服务器上的web应用程序中调用API。在那里弹出一个对话框可能不是一个好主意。