Я создал приложение API, которое размещено в Azure и защищено Active Directory (при открытии URL-адреса в браузере я перенаправляюсь на страницу входа с Microsoft). Теперь у меня есть угловое приложение, которое должно получить данные из api. Я также защитил угловое приложение с помощью каталога Actice. Таким образом, я хочу получить токен, который я могу использовать для аутентификации.Azure API call: response содержит html page
API вызова:
const auth = btoa("[my username]:[my password]");
var token;
if((window.location.href).indexOf('/') != -1) {
var queryString = (window.location.href).substr((window.location.href).indexOf('/') + 1);
token = (queryString.split('='))[1];
token = decodeURIComponent(token);
}
$http.defaults.headers.common['Authorization'] = 'Basic ' + auth;
$http.defaults.useXDomain = true;
$http.defaults.headers.common['x-ms-token-aad-id-token'] = token;
delete $http.defaults.headers.common['X-Requested-With'];
var erg = $http.get('http://[app name].azurewebsites.net/api/contacts')
.success(function (data, status, headers, config) {
$scope.loggedIn = "LOGGED IN";
$scope.responseData = data;
})
.error(function (data, status, header, config) {
console.log("ERROR");
});
я должен был открыть Chrome с отключенным 'же политику происхождения'.
Данные, которые были возвращены:
<html><head><title>Working...</title></head>
<body>
<form method="POST" name="hiddenform" action="https://[app name].azurewebsites.net/.auth/login/aad/callback"><input type="hidden" name="id_token" value="eyJ0[...]NBw" />
<input type="hidden" name="state" value="/api/contacts#" />
<input type="hidden" name="session_state" value="fdbe7ee3-[...]-b12663d39846" />
<noscript><p>Script is disabled. Click Submit to continue.</p><input type="submit" value="Submit" /></noscript>
</form>
<script language="javascript">document.forms[0].submit();</script>
</body>
</html>
Как я могу получить данные в формате JSON, что API должен фактически вернуть? Что я могу сделать с этим html-фрагментом?
Вы должны проверить этот учебник: https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-angular/. Сначала вам необходимо выполнить аутентификацию с помощью Azure AD, чтобы получить токен доступа для вызова вашего API. И вы никогда не должны иметь свой пароль в интерфейсе JavaScript. – juunas
Вы пытались использовать https://github.com/AzureAD/azure-activedirectory-library-for-js, чтобы получить токен и использовать его для вызова своего ресурса защищенный AAD –
Да, я попробовал. Я получаю токен (в url ...), но я не могу получить доступ к API. На самом деле я не знаю, где я должен поставить токен. –