隐式授权流程不需要access_token吗?

时间:2017-12-12 00:35:31

标签: azure-active-directory adal adal.js

我们正在尝试集成adal.js来访问EWS API,我们的应用程序是使用Angular 1.5.8实现的。成功登录后,它会使用id_token重定向回应用主页。根据MS的以下链接: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-implicit 我们假设使用access_token而不是id_token与EWS API进行通信。

  

现在您已将用户签名到单页应用程序中,您可以访问令牌以调用Azure AD保护的Web API,例如Microsoft Graph。

因此我们尝试将adalAuthenticationService.acquireToken与有效的clientId一起使用。但是我们获得的令牌与id_token相同。我们做错了什么?

	// configure our routes
	testApp.config(function($httpProvider, $locationProvider, $routeProvider, adalAuthenticationServiceProvider) {

		$locationProvider.html5Mode({
		  enabled: true,
		  requireBase: false
		}).hashPrefix('!');

		$routeProvider

			// route for the home page
			.when('/', {
				templateUrl : 'pages/home.html',
				controller  : 'mainController',
				requireADLogin: true
			})

        adalAuthenticationServiceProvider.init({
            // clientId is the identifier assigned to your app by Azure Active Directory.
            clientId: "TEST_CLIENT_ID",
            cacheLocation: 'localStorage', // optional cache location default is sessionStorage
        }, $httpProvider);
		
	});

	// create the controller and inject Angular's $scope
	testApp.controller('mainController', function($scope, adalAuthenticationService) {
		// create a message to display in our view
		$scope.message = 'Everyone come and see how good I look!';
		$scope.getAccessToken = getAccessToken;

		function getAccessToken() {
			adalAuthenticationService.acquireToken('TEST_CLIENT_ID', (newToken) => {
				console.log('Access token aquired: ' + newToken);
			}, (error) => {
				console.log('ERROR with token: ' + angular.toJson(error, true));
			});
		};
	});

1 个答案:

答案 0 :(得分:0)

代码似乎没有告诉acquireToken调用它想要一个令牌的资源。你把它放在其他地方吗?

否则您应该添加资源网址" https://outlook.office365.com"作为acquireToken调用的资源参数。