Токен аутентификации ADAL отличается от токена почтальона Oauth2
Я пытаюсь подключить мой API к динамике 365 CRM. Когда я получаю токен с почтальоном, я могу получить к нему доступ, но когда я получаю его с помощью ADAL, запрос возвращает 401 несанкционированный. Если я жестко закодирую токен с почтальоном в моем приложении, он будет работать нормально. Я видел, что почтальон возвращает мне информацию, которая ADALnot (например, refresh_token, token_id)
Получить токен с ADAL
string resource = "https://******.crm2.dynamics.com/";
string clientId = "**************";
string clientSecret = "************";
string authority = "https://login.microsoftonline.com/*****/oauth2/authorize";
ClientCredential credential = new ClientCredential(clientId, clientSecret);
AuthenticationContext authContext = new AuthenticationContext(authority, true);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, credential);
1 ответ
С почтальоном вы получаете токен, используя поток кода авторизации OAuth 2.0. Azure AD вернет токен доступа, обновит токен, токен идентификатора при успешном ответе.
С ADAL authContext.AcquireTokenAsync(resource, credential);
функция, вы получаете токен, используя поток учетных данных клиента. С помощью этого потока приложение представляет свои клиентские учетные данные конечной точке выдачи маркера OAuth2, а взамен получает токен доступа, который представляет само приложение без какой-либо пользовательской информации, поэтому вы не получите id_token, поскольку никакой пользовательской информации не существует. Кроме того, нет необходимости, чтобы приложение получало токен обновления. Когда срок действия маркера доступа истекает, он просто возвращается к конечной точке выдачи маркера OAuth2, чтобы получить новую.
Вы можете получить токен, используя поток кода авторизации с ADAL, пожалуйста, нажмите здесь для примера кода.