Я пробую неявный поток, используя adal js.Я создал пробный экземпляр Dynamics 365 и в Azure AD этого экземпляра создал регистрацию приложения.Мое одностраничное приложение выполняет следующее:
Когда пользователь пытается перейти на домашнюю страницу, оно перенаправляет пользователя на https://login.microsoftonline.com/common/oauth2/authorize, где пользователь успешно входит в систему.
Послевойти в систему Я использую getToken для получения токена из класса обслуживания adal.
import {AuthenticationContext, withAdalLogin} from 'react-adal';
import ProjectConstant from './data/projectconstant'
export const authContext = new AuthenticationContext(ProjectConstant.adalSet);
export const acquireToken = (func) =>
authContext.acquireToken(ProjectConstant.adalSet.endpoints.api, func);
export const getToken = () =>{
let token = authContext.getCachedToken(ProjectConstant.adalSet.clientId);
if(authContext.getCachedUser() == null || token == null){
authContext.login();
}
return authContext.getCachedToken(ProjectConstant.adalSet.clientId);
}
export const withAdalLoginApi = withAdalLogin(authContext, ProjectConstant.adalSet.endpoints.api);
Я использую этот токен для выполнения запроса к экземпляру пробной динамики 365, и мне выдается ошибка 401, код, который делаетвыборка ниже,
export const SearchAccount = () =>{
var token = getToken();
console.log("Token is" + token );
let url = "<trial>/api/data/v9.0/accounts";
fetch(url, {
method: 'get',
headers: new Headers({
'Authorization': 'Bearer '+ token,
'Accept' : 'application/json',
//'Cache-Control' : 'no-cache',
'Content-Type': 'application/json; charset=utf-8',
'OData-MaxVersion' : '4.0',
'OData-Version' :'4.0',
})})
.then(result => console.log(result));
}
Я могу использовать другой браузер и после физического входа в пробный экземпляр, я могу скопировать вставить тот же URL выше в другой вкладке, и он показывает все данные нормально,однако если я сделаю то же самое в браузере, в котором запущено приложение, я получу 401 на новой вкладке.
Я также могу использовать почтальон, выполнив следующие действия, https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/webapi/setup-postman-environment и быть представлен с данными.
Приложение (пользователь) имеет правильный уровень привилегий в экземпляре.Единственное, что отличается в каждом из трех условий - это сгенерированный мной токен, но если токен неправильный, я не должен получить запрещенную ошибку?Я не уверен, что я делаю не так