Проблема с Microsoft ADFS IDP SAML

У меня есть компьютер с Windows Server 2012, на котором установлены службы федерации Active Directory, которые позволяют ему действовать как поставщик удостоверений. У меня есть поставщик услуг Shibboleth, который использует моего IDP для аутентификации, однако привязка разрешения артефактов не работает.

Я могу подтвердить, что моя база данных конфигурации ADFS настроена для использования SQL-сервера и включена конечная точка разрешения артефактов. Я просмотрел базу данных artifactstore, и, похоже, был сгенерирован и сохранен ответ SAML. Я пропустил это через валидатор SAML, и это правильный ответ. Сообщение об ошибке, которое возвращает сторона Shibboleth:

Поставщик удостоверений вернул ошибку SAML во время разрешения артефакта.

Ошибка от поставщика удостоверений:

Статус: urn: oasis: names: tc: SAML: 2.0: status: Requester Когда я проверяю журналы событий ADFS, сообщается об ошибке:

Запрос разрешения артефакта не выполнен.

Сообщение об исключении дополнительных данных: MSIS0018: сообщение протокола SAML не может быть прочитано, поскольку оно содержит недопустимые данные.

Я включил трассировку ADFS, и это единственное сообщение, которое также было возвращено. Кто-нибудь может помочь, пожалуйста?

Обновление - я запустил SAML Tracer при использовании Firefox, и запрос, отправленный от SP к IDP, выглядит следующим образом (я удалил детали):

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                    AssertionConsumerServiceURL="https://xxx.xxx.com/Shibboleth.sso/SAML2/Artifact"
                    Destination="https://ccc.ccc.co.uk/adfs/ls/"
                    ID="_1xxxxxxxxxxxxxxx"
                    IssueInstant="2015-02-19T10:10:53Z"
                    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
                    Version="2.0"
                    >
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://xxx.xxx.com/shibboleth</saml:Issuer>
    <samlp:NameIDPolicy AllowCreate="1" />
</samlp:AuthnRequest>

Ответ через браузер не отправляется, однако ADFS генерирует ответ SAML и сохраняет его в базе данных артефактов adfs. Ответ следующий (детали удалены):

<samlp:Response ID="_1xxxxxxxxxxx" Version="2.0" IssueInstant="2015-02-19T10:11:05.391Z" 
	Destination="https://xxx.xxx.com/Shibboleth.sso/SAML2/Artifact" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" 
	InResponseTo="_1xxxxxxxxxxxxxxx" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
	<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://ccc.ccc.co.uk/adfs/services/trust</Issuer>
	<samlp:Status>
		<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
		</samlp:Status>
		<Assertion ID="_dxxxxxxxxxxx" IssueInstant="2015-02-19T10:11:05.282Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
			<Issuer>http://ccc.ccc.co.uk/adfs/services/trust</Issuer>
			<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
				<ds:SignedInfo>
					<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
					<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
					<ds:Reference URI="#_dxxxxxxxxxxx">
						<ds:Transforms>
							<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
							<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
						</ds:Transforms>
						<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
							<ds:DigestValue>xxxxxxxxxx=</ds:DigestValue>
					</ds:Reference>
				</ds:SignedInfo>
				<ds:SignatureValue>xxxxxxxxxxxxx</ds:SignatureValue>
				<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
					<ds:X509Data>
						<ds:X509Certificate>xxxxxxxxxxxxxxxxxx==</ds:X509Certificate>
					</ds:X509Data>
				</KeyInfo>
			</ds:Signature>
			<Subject>
				<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" 
					NameQualifier="http://ccc.ccc.co.uk/adfs/services/trust" 
					SPNameQualifier="http://xxx.xxx.com/shibboleth">
					xxxxxxxxxxxx=
				</NameID>
				<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
					<SubjectConfirmationData InResponseTo="_1xxxxxxxxxxx" NotOnOrAfter="2015-02-19T10:16:05.407Z" 
						Recipient="https://sp.cobweb.secure-dimensions.de/Shibboleth.sso/SAML2/Artifact" />
				</SubjectConfirmation>
			</Subject>
			<Conditions NotBefore="2015-02-19T10:11:05.188Z" NotOnOrAfter="2015-02-19T18:11:05.188Z">
				<AudienceRestriction>
					<Audience>
						https://xxx.xxx.com/shibboleth
					</Audience>
				</AudienceRestriction>
			</Conditions>
			<AuthnStatement AuthnInstant="2015-02-19T10:11:03.766Z" SessionIndex="_dxxxxxxxxxx">
				<AuthnContext>
					<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthnContextClassRef>
				</AuthnContext>
			</AuthnStatement>
		</Assertion>
</samlp:Response>

У меня есть базовый ответ только с NameID и без атрибутов на данный момент, так как я получаю одно и то же сообщение об ошибке независимо от того, есть они там или нет. Спасибо,

Fran


person fhmsparkle    schedule 18.02.2015    source источник


Ответы (1)


Используйте Firefox и добавьте надстройку SAML Tracer.

Затем взгляните на сообщения SAML и посмотрите, есть ли что-нибудь очевидное.

Или разместите их здесь (сначала скройте все идентифицирующие данные).

person rbrayb    schedule 18.02.2015