Некоторое время я безуспешно пытался объединить домен Office365 в федерацию. Я дошел до того момента, когда я получаю запрос и могу сгенерировать ответ на его основе, но не знаю, правильный ли ответ. Я получаю эту ошибку:
Извините, но у нас возникли проблемы с входом в систему
Вы не можете использовать учетную запись организации для входа на этот сайт. Убедитесь, что вы правильно ввели адрес веб-сайта. Если у вас все еще есть проблемы, вы можете связаться со своим администратором.
Вот мой запрос и ответы SAML (с удаленной конфиденциальной информацией)
<samlp:AuthnRequest
xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'
xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'
ID='_1ae9c30e-8767-44e4-8221-ecd18d55e1c0'
IssueInstant='2015-03-09T20:46:12Z'
Version='2.0'
AssertionConsumerServiceIndex='0'>
<saml:Issuer>
urn:federation:MicrosoftOnline
</saml:Issuer>
<samlp:NameIDPolicy
Format='urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'/>
</samlp:AuthnRequest>
<samlp:Response
Destination='https://login.microsoftonline.com/login.srf'
ID='AD5D2AFFA557338C737661EA4746DE1F5DEB0575C7'
InResponseTo='_1ae9c30e-8767-44e4-8221-ecd18d55e1c0'
IssueInstant='2015-03-09T20:46:12Z' Version='2.0'
xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'
xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'>
<saml:Issuer>
http://self.clearlogin.com/
</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value='urn:oasis:names:tc:SAML:2.0:status:Success'/>
</samlp:Status>
<saml:Assertion ID='D1B7C4F18C08B5E2A0B4811121FF8FC18E5CE2C305'
IssueInstant='2015-03-09T20:46:12Z'
Version='2.0'
xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>
<saml:Issuer>
http://self.clearlogin.com/
</saml:Issuer>
<ds:Signature xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>
<ds:SignedInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>
<ds:CanonicalizationMethod Algorithm='http://www.w3.org/2001/10/xml-exc-c14n#'/>
<ds:SignatureMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#rsa-sha1'/>
<ds:Reference URI='#D1B7C4F18C08B5E2A0B4811121FF8FC18E5CE2C305'>
<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/2001/04/xmlenc#sha1'/>
<ds:DigestValue>
[REDACTED]
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
[REDACTED]
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
[REDACTED]
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<saml:Subject>
<saml:NameID
Format='urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
NameQualifier='http://self.clearlogin.com'
SPNameQualifier='urn:federation:MicrosoftOnline'>
ABCDEG1234567890
</saml:NameID>
<saml:SubjectConfirmation
Method='urn:oasis:names:tc:SAML:2.0:cm:bearer'>
<saml:SubjectConfirmationData
InResponseTo='_1ae9c30e-8767-44e4-8221-ecd18d55e1c0'
NotOnOrAfter='2015-03-09T21:06:12Z'
Recipient='https://login.microsoftonline.com/login.srf'/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions
NotBefore='2015-03-09T20:46:12Z'
NotOnOrAfter='2015-03-09T21:06:12Z'>
<saml:AudienceRestriction>
<saml:Audience>
urn:federation:MicrosoftOnline
</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant='2015-03-09T20:46:12Z'>
<saml:AuthnContext>
<saml:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:Password
</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute Name='IDPEmail'>
<saml:AttributeValue xsi:type='xs:string'
xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
[REDACTED]
</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Мы используем стороннюю IDP (самих себя) для создания ответа SAML. Мы НЕ с использованием ADFS.
Import-Module MSOnline
$idpSub = Read-Host 'Please enter the idP subdomain on clearlogin.com: '
$passiveLogin = "https://"+idpSub+".clearlogin-stage.com/apps/office365/login"
$logout = "https://"+$idpSub+".clearlogin-stage.com/apps/logout"
$issuer = "https://"+$idpSub+".clearlogin-stage.com/"
$certPath = C:\Users\MyUser\Desktop
$cert = New-Object
System.Security.Cryptography.X509Certificates.X509Certificate2($certPath)
$certData = [system.convert]::tobase64string($cert.rawdata)
$msdomain = Read-Host 'Please enter your Office365 domain.'
Set-MsolDomainAuthentication
-Authentication Federated
-DomainName $msdomain
-FederationBrandName $msdomain
-IssuerUri $issuer
-LogOffUri $logout
-PassiveLogOnUri $passiveLogin
-SigningCertificate $certData
-PreferredAuthenticationProtocol Samlp
Добавлена дополнительная информация и моя команда Set-MsolDomainAuthentication.
Проблемы, казалось, лежали в нескольких местах. В сертификате был закодирован неправильный издатель, и значения дайджеста были неправильными.