Токен аутентификации 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, пожалуйста, нажмите здесь для примера кода.

Другие вопросы по тегам