Azure AD身份验证重定向不使用已配置的回复URL

时间:2014-07-09 19:51:10

标签: angularjs authentication azure openid single-sign-on

我在Azure AD中注册了一个角度应用程序进行身份验证。在auth之后,Azure重定向回到我的应用程序,由Azure配置中的“回复URL”指定。

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

应用程序需要将url参数片段(例如auth代码,令牌,状态等)附加到重定向url,如果用户auth成功,则会检查这些片段。

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

之前有效,但截至昨天,重定向网址现在看起来像这样

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

天蓝色管理门户网站中的应用配置未进行任何更改。

这种新格式打破了应用中的角度路由,并且没有捕获/解析auth参数。回复网址中“#”后面的所有内容似乎都被忽略了。

是否有什么原因导致重定向网址不使用Azure AD中配置的完整回复网址?

2 个答案:

答案 0 :(得分:0)

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

可以通过redirectUri方法设置adalAuthenticationServiceProvider.init选项来配置此重定向网址(因为您正在制作Angular应用)。

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

查看here以获取更多详细信息。

希望在你的情况下有所帮助。

答案 1 :(得分:0)

我所做的是在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像往常一样返回片段中的代码,并且所有路由都可以正常工作。