在使AppService身份验证正常工作的所有失败尝试之后,我到达了SO,以寻求帮助来解决JavaScript的身份验证问题。
方案:租户中的SPA应用程序需要访问Azure函数才能对该应用程序进行API调用。 SPA和Azure功能都在同一租户中。 SPA应用程序将首先进行身份验证,然后根据用户操作进行身份验证,它需要调用使用Azure AD身份验证保护的Azure函数。
问题:无法获取Azure函数的令牌/ AppServiceAuthentication cookie来进行API调用。
我尝试过的事情:
1)https:// {} .azurewebsites.net / .auth / me:-这提供了具有已登录SPA页面id_token的功能的访问令牌。由于需要在Javascript API中获取令牌,因此我尝试使用Ajax调用进行调用,但是由于此./auth/me URL重定向到login.microsoft.online/{tenant}而导致CORS问题。将Azure函数CORS设置为所有来源(*),但没有运气。
2)MSAL.js:-通过调用AcquisitionTokeSilent使用此API,但是此API始终使用响应类型= id_token +令牌,并返回AccessToken和Id_Token。当我在调用Azure函数时将AccessToken用作承载时,出现未经授权的401错误。
3)ifFrame:考虑使用iFrame启动.Auth / me并从iFrame读取令牌。由于它是跨域的,因此无法访问内容,愚蠢的我!新的子窗口也存在同样的问题。
有人使用SPA页面中的Azure函数API吗?谁能告诉我我要去哪里错了?
谢谢。