我在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中配置的完整回复网址?
答案 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像往常一样返回片段中的代码,并且所有路由都可以正常工作。