1

是否有可能从JavaScript调用AAD认证的Azure功能,而不需要像ADAL这样的auth库,也不需要向Microsoft注册客户端应用程序?调用AAD从没有ADAL的Javascript验证的Azure函数?没有访问控制允许来源标头存在

获取此错误:否请求的资源上存在“Access-Control-Allow-Origin”标头。 Origin'

简单的Web客户端应用程序和天青功能都在相同的AAD下注册。都有azurewebsites.net域。

什么是我们最轻的网络客户端?

+0

您可以在没有ADAL的情况下拨打电话,但是如果没有任何auth库,在Azure AD –

+0

上未注册应用程序是不可能的?我们一直在努力,没有运气,你知道的任何样品? – o365spo

+0

不确定github上是否有任何示例,但它只是OpenID Connect,您是如何尝试的? –

回答

0

您得到的错误来自cross-origin resource sharing (CORS)检查。我怀疑这是从Web应用程序调用函数时发生的。这个想法是,浏览器首先发出OPTIONS请求,以查看调用者(web应用程序)是否允许将调用作为不同域上的资源(函数应用程序)。如果这是被批准的,那么它将实际调用该函数。

所以,我们只需要使功能应用程序响应,让浏览器知道允许通话。幸运的是,函数具有内置的CORS功能。在门户中,为您的功能应用程序选择平台功能。在API部分下,您会看到一个CORS选项。为您的功能应用添加域名并点击保存。您应该看到Access-Control-Allow-Origin错误消失。

至于AAD,任何OpenID Connect客户端库都可以工作 - 尽管如此,ADAL是一个不错的选择。不过,您仍然需要创建客户端注册。

+0

谢谢。 Cors已经确定,仍然失败。侧面的问题,ADAL要求客户端有服务器端代码? – o365spo

0

在Azure AD中,使用正常的OpenID Connect/OAuth流程,您可以通过向/token端点发出请求来获取令牌。但是,azure广告端点不支持CORS请求,因此通过AJAX调用获取访问令牌是不成问题的。相反,您可以在隐藏的iframe中使用the implicit flow以获取Web API的新标记。有关更多详细信息,请参阅文档herehere

是的,我建议您使用ADAL.JS,它可以帮助您使用Azure AD更轻松地处理身份验证。

相关问题