Как настроить вход пользователей интрасети из окон dekstop для многих веб-приложений? (ADFS 3.0, SAML 2.0, SSO)

Сейчас я работаю над проектом с единым входом (SSO) через ADFS 3.0 с использованием токена SAML (SimpleSAMLphp).

У меня следующие настройки:

  • Windows Server 2012 R2 с AD и ADFS 3.0 в качестве поставщика удостоверений
  • Веб-сервер Ubuntu. Тестовое веб-приложение (PHP) установило SimpleSAMLphp в качестве поставщика услуг
  • Клиент Windows 10

Текущий статус:

  • Пользователь входит в Windows, используя свои учетные данные.

  • Пользователь открывает браузер и входит в веб-приложение. Веб-приложение перенаправляется на страницу входа в ADFS.

  • Войдите в систему, используя те же учетные данные, которые использовались при аутентификации Windows.

  • Вернитесь на страницу test-webapp, и пользователь должен пройти аутентификацию.

Все работает нормально, но как реализовать настоящий SSO? Как настроить пользователей интрасети, которые входят в свои окна dekstop, а затем открывают браузер (IE, Firefox и Chrome), переходят на веб-сайт без повторного ввода учетных данных на странице ADFS. Другими словами, встроенная проверка подлинности Windows (WIA).

Кто-нибудь еще делал это с этой настройкой раньше? Было бы неплохо поделиться опытом и решениями. Большое спасибо :)


person mar_mj    schedule 19.09.2017    source источник


Ответы (2)


Вам необходимо настроить браузер, чтобы справиться с этим.

Только IE делает это по умолчанию.

Хороший набор правил здесь . Примечание - страница вниз - более одной статьи.

person rbrayb    schedule 19.09.2017

Вы должны знать о концепции, эта статья хороша для вас .. Аутентификация OAUTH2 с ADFS 3.0

И если вам нужно, как читать токен JWT с помощью PHP, используйте этот код:

function readToken($jwt_access_token){ 
	$separator = '.'; 
	if (2 !== substr_count($jwt_access_token, $separator)) {
		throw new Exception("Incorrect access token format");
	} 
	list($header, $payload, $signature) = explode($separator, $jwt_access_token); 
	$decoded_signature = base64_decode(str_replace(array('-', '_'), array('+', '/'), $signature)); 
	// The header and payload are signed together
	$payload_to_verify = utf8_decode($header . $separator . $payload);  
	// output the JWT Access Token payload
	return base64_decode($payload);
}

person Nugroho Rahmat Hadi Wibowo    schedule 09.04.2018