C # - получить X-Auth-токен с помощью аутентификации ADFS - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время у нас есть корпоративное веб-приложение, которое работает на Apache. Это настройка для аутентификации SAML через ADFS 4.0. При доступе к приложению через браузер учетные данные Windows пользователя (настройка зоны интрасети) передаются в ADFS, а затем делается успешная попытка входа в систему.

Доступ к веб-приложению можно получить через остальные API. Чтобы выполнить / использовать веб-API, ему необходимо передать заголовок X-Auth-Token (длиной 64 символа). Через браузер, если я перехожу на https://webapp.com/api/v1/session/saml-login,, ответ JSON возвращается после аутентификации через ADFS. Первая запись в ответе JSON веб-приложения - это X-Auth-Token.

Я хотел бы разработать различные клиентские приложения, которые будут использовать остальные API. Поскольку приложения будут выполняться на стороне клиента, я не хочу передавать имена пользователей и пароли, поэтому вместо этого я подумал об аутентификации клиентского приложения через контекст пользователей с использованием ADFS. Примечание. Существует возможность передавать явные учетные данные пользовательского приложения через полезную нагрузку JSON в https://webapp.com/api/v1/session/login, что, в свою очередь, возвращает X-Auth-Token, и я проверил это с помощью приложения ac # - и оно работает .. ... но, как упоминалось ранее, я не хочу использовать явные учетные данные.

Для начала я создал еще одно приложение на c # (используя код https://gavindraper.com/2013/01/31/ad-fs-token-based-authentication-in-code/), который возвращает следующую информацию о заявке на токен из ADFS.

Снимок экрана с ответом на претензию

Поскольку я считаю, что успешно прошел проверку подлинности в ADFS, могу ли я в любом случае с помощью c # или другим способом передать эту информацию о претензии на сервер веб-приложений, чтобы я мог затем получить X-Auth-Token и сохранить его как переменную так что я могу затем передать его в мой код C # для аутентификации API веб-приложения?

Из того же экземпляра приложения c #, если я выполню

var client = new WebClient();
var text = client.DownloadString("https://webapp.com/api/v1/session/saml-login");
Console.WriteLine(text);
Console.ReadLine();

Я надеялся, что X-Auth-Token в ответе JSON будет возвращен из приведенного выше кода. Но это не так ... вместо этого в выходных данных отображается ошибка входа в ADFS, поскольку учетные данные Windows не использовались для аутентификации в ADFS.

В любом случае, я могу просто получить X-Auth-Token с сервера веб-приложений, передав требование ADFS без использования явного пользовательского приложения или учетных данных Windows?

Приветствия

Craig

...