我正在使用adal angular js库adal angular进行身份验证,以生成令牌。登录并重定向时,令牌会像下面这样附加到querystring中https://localhost:8800/index.html#id_token=eyj0exaioijkv1qilcjhb...
为什么会发生这种情况,我应该如何避免url上的令牌?
我已经检查了这个问题并尝试了解决方案,但它对我不起作用。我所做的一切都是错的?有人能帮我吗?
这是我使用的代码,
app.js
var app = angular.module('app', [
'ngRoute',
'AdalAngular',
]);
app.config([
"$routeProvider",
"$locationProvider",
"adalAuthenticationServiceProvider"
function (
$routeProvider,
$locationProvider,
adalProvider
) {
$locationProvider.hashPrefix("");
adalProvider.init(configuration_object, $httpProvider);
$routeProvider
.when("/abcd", {
templateUrl: urlBase + "abcd.html" + version,
controller: "abcdCtrl",
requireADLogin: true,
})
.otherwise({
redirectTo: "/login",
});
}
loginCtrl.js
angular.module("app").controller("loginCtrl", [
"adalAuthenticationService",
function (
adalService
) {
adalService.login();
}
}
1条答案
按热度按时间mpgws1up1#
令牌在查询字符串中返回,因为adal angular使用隐式授权,其中令牌直接从授权端点返回,而不是由应用程序从令牌端点获取。
要从URL中隐藏它们,您需要使用pkce的授权码grant。只有较新版本的msal.js才支持此流,这里有一个Angular Package :https://www.npmjs.com/package/@天蓝/微升角。您还需要将回复URL更改为单页应用程序平台,以便支持此更新的流。如果您想了解此流程的工作原理,文档中提供了一些详细信息:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow. 本质上,url中只传递授权代码,令牌通过来自前端的http请求从令牌端点获取。
请注意,在这两个流中,令牌对应用程序的用户仍然可见,因为代码在他们的计算机上运行:)