Azure AD认证重定向没有使用配置的回复url



我已经注册了一个带有Azure AD的angular应用程序进行身份验证。授权后,Azure重定向回我的应用程序,由Azure配置中的"回复Url"指定。

Reply Url = http://myapp.com/#/?

应用程序期望url参数片段(如auth code, token, state等)附加到重定向url后,如果用户auth成功,将检查这些参数片段。

Redirect Url = http://myapp.com/#/?code=<some code>&id_token=<id token>&...

这之前是工作的,但昨天重定向url现在看起来像这样

Redirect Url = http://myapp.com/#code=<some code>&id_token=<id token>&...

azure管理门户中的应用配置未做任何更改。

这个新格式破坏了应用中的angular路由,并且auth参数不会被捕获/解析。回复url中"#"之后的内容似乎都被忽略了。

关于什么原因导致重定向url不使用Azure AD中配置的完整回复url的任何想法?

据我所知,在Azure AD上配置的Reply Url只是为了验证重定向urllocation.origin

这个重定向的url可以通过在adalAuthenticationServiceProvider.init方法中设置redirectUri选项来配置(当你在制作Angular应用时)。

回到你的问题,我有相同的重定向url格式#id_token=...没有?字符。但是对我来说都很好,因为我可以通过访问adalAuthenticationService.userInfo对象来访问所有必要的值。

点击这里查看更多详细信息。

希望对你有帮助

我所做的是在Angular端使用HTML5模式。

你可以看到我如何配置ADAL和路由:

$locationProvider.html5Mode(true).hashPrefix("!");
var endpoints = {
    "/api": "https://app-id-uri"
};
adalAuthenticationServiceProvider.init(
{
    clientId: "12345678-1234-1234-1234-123456789012",
    endpoints: endpoints
},
$httpProvider
);
在服务器端,因为路由是在客户端完成的,所以无论遇到什么路由,返回索引页都很重要。现在AAD像往常一样返回片段中的代码,所有路由都可以正常工作。

相关内容

最新更新