Аутентификация с использованием Azure AD, успешная с ручным запросом GET, но неуспешная с приложением .net Framework - PullRequest
1 голос
/ 13 марта 2019

Я следую этому руководству ( введите описание ссылки здесь ), чтобы получить доступ к ресурсам Skype для бизнеса.Все идет хорошо, когда я пытаюсь через Бессонница или Почтальон , но у меня не получается, когда я делаю это с моим приложением .net Framework.Сначала давайте посмотрим на ручной вызов: всякий раз, когда я делаю запрос GET, показанный на следующем рисунке, меня перенаправляют на страницу входа в Microsoft, я вхожу со своими учетными данными и в ответ (в URL) вижу нужный мне токен авторизации.для следующих шагов.

enter image description here

Теперь я пытаюсь добиться того же поведения с помощью моего приложения .net Framework, но он говорит, что я внужен секрет клиента , который я не использую при ручном вызове.Код ниже:

enter image description here

Итак, приложение запускается, появляется окно для ввода моих учетных данных, я ввожу свое имя пользователя и пароль, а затем следующую ошибкуПоявляется:

enter image description here

Может ли это быть связано с RedirectUri?В случае ручного вызова, который проходит успешно, после того, как я вставляю свои учетные данные, меня перенаправляют на страницу, указанную в redirect_uri (что в моем случае не работает), но, по крайней мере, я получаю токен обратно, см. Изображение:

enter image description here

1 Ответ

2 голосов
/ 14 марта 2019

Если вы используете тип приложения webapp / api, вам нужно передать clientSecret для получения токена. Вот пример кода.

var authContext = new AuthenticationContext(context.Options.Authority, new NaiveSessionCache(userObjectId, context.HttpContext.Session));
                var credential = new ClientCredential(context.Options.ClientId, context.Options.ClientSecret);
                var token2 = await authContext.AcquireTokenAsync(context.Options.Resource,credential);

enter image description here

Если вы не хотите передавать clientSecret для получения токена, вам необходимо использовать тип приложения NativeClient.

Тип приложения можно найти на портале Azure. enter image description here

...