Azure active directory EasyAuth在不同主机上具有水疗和AzureFunction

Azure active directory EasyAuth在不同主机上具有水疗和AzureFunction,azure-active-directory,azure-functions,easy-auth,Azure Active Directory,Azure Functions,Easy Auth,我正在尝试将EasyAuth(aad)与SPA结合使用,SPA目前位于“localhost:8080”上,Azure函数托管在Azure({Function app})中.azurewebsites.net。目的是让SPA调用Azure函数上的安全端点。因此,我将Azure函数注册为AD中的应用程序,SPA中的身份验证重定向到Azure函数EasyAuth端点似乎正在工作,但通过登录后重定向\u url重定向回本地主机SPA不可用 我添加了http://localhost:8080将AAD注册的

我正在尝试将EasyAuth(aad)与SPA结合使用,SPA目前位于“localhost:8080”上,Azure函数托管在Azure({Function app})中.azurewebsites.net。目的是让SPA调用Azure函数上的安全端点。因此,我将Azure函数注册为AD中的应用程序,SPA中的身份验证重定向到Azure函数EasyAuth端点似乎正在工作,但通过
登录后重定向\u url重定向回本地主机SPA不可用

我添加了
http://localhost:8080
将AAD注册的应用程序作为允许的重定向URI。但是,如果我完全限定URL,我将被重定向回
{function host}/.auth/login/done
。是否期望SPA在与azure功能相同的主机名下运行,或者是否有方法将设置配置为允许SPA主机的任何URL

行为 对于行为期间的HTTP数据,一旦登录成功,
。在重定向到默认完成页面并停止之前,auth/login/aad/callback
将加载以下内容

  • 响应头
    • 位置
      ={function host}/.auth/login/done
  • 表格数据:
    • 状态
      =http://localhost:8080
    • code
      =验证代码
    • id\u令牌
      =auth令牌
我在温泉里怎么称呼它的
函数processAuthCheck(xmlhttp){
if(xmlhttp.status==401){
url=“https://{function app}.azurewebsites.net/.auth/login/aad?”
+“post_login_redirect_url=“+encodeURI(”http://localhost:8080");
window.location=url;
}else if(xmlhttp.status!=200){
警报(“此服务有错误!”);
返回;
}
var result=JSON.parse(xmlhttp.responseText);
log(JSON.stringify(result));
返回;
};

关于此问题,请参考以下步骤

  • 注册Azure AD应用程序以使用easy auth保护Azure功能

  • 注册客户端应用程序

    a

    b、 在隐式授权和混合流部分,选择ID令牌访问令牌

    c、 配置API权限

  • 代码

    a、 将Azure AD auth集成到spa应用程序中。完成此操作后,当用户访问您的应用程序时,他们需要输入其AD帐户以获取访问令牌

    b、 客户端将此
    accessToken
    交换为“应用服务令牌”。它通过向
    https://{App}.azurewebsites.net/.auth/login/aad
    发送帖子,内容为
    {access\u Token:“{Token from Azure AD}”}
    。这将返回
    身份验证令牌

    c、 在名为
    x-zumo-auth
    的标题中使用该
    authenticationToken
    。使用该标题向函数应用程序发出所有请求


  • 有关更多详细信息,请参阅和。关于如何在spa中实施Azure广告,请参阅。

    我有一种感觉,这就是我必须要去的地方,但我不(现在仍然不)理解第二次注册的必要性。如果你能在这个答案中添加一些关于为什么的内容,那么这将是一个很好的答案。