我正在尝试使用 Okta 设置 AAD,并发现当用户访问 App Embed 链接并将其 SAML 响应发布到https://login.microsoftonline.com/login.srf时,他们会收到一个无用的错误:
AADSTS50107: Requested federation realm object 'http://okta.com/..............' does not exist
我已经设置了一个外部身份提供者。如何让它识别我的域?
我正在尝试使用 Okta 设置 AAD,并发现当用户访问 App Embed 链接并将其 SAML 响应发布到https://login.microsoftonline.com/login.srf时,他们会收到一个无用的错误:
AADSTS50107: Requested federation realm object 'http://okta.com/..............' does not exist
我已经设置了一个外部身份提供者。如何让它识别我的域?
我试图弄清楚当向身份提供者(带有证书身份验证的 SAML)进行身份验证时,Google CHrome 从哪里获取我的身份我尝试过的内容:
删除所有 cookie、保存的密码、缓存文件
从我的个人商店中删除我的个人证书(我使用的证书))
在 Firefox 上,如果我刷新页面,这足以让 IDP 注销我并再次提示我输入证书,但在 Chrome 上,它只会让我重新登录!
在 chrome://password-manager-internals/ 上,我可以看到加载密码的过程(我不知道是哪个密码,因为我输入的唯一密码是解密我删除的用户证书的密码!):
Message: PasswordAutofillAgent::DidStartProvisionalLoad
PasswordManager::DidNavigateMainFrame: false
The new state of the UI: 0
Message: PasswordAutofillAgent::SendPasswordForms
only_visible: false
Security origin: https://ADFS-IDP/
Number of all forms: 1
Message: PasswordAutofillAgent::SendPasswordForms
only_visible: true
Security origin: https://ADFS-IDP/
Number of all forms: 1
Form found on page: {
Action : https://ADFS-IDP/ ,
Form name or ID :
}
Form is visible: false
Some control elements not associated to a form element are visible: false
Message: PasswordManager::CreatePendingLoginManagers
Message: PasswordManager::OnPasswordFormsRendered
Message: PasswordManager::IsAutomaticSavePromptAvailable
Message: No provisional save manager
HTML form for submit: {
Action : https://ADFS-IDP/ ,
Form name or ID :
}
我的问题是:Chrome 从哪里获得我的身份,而 Firefox 没有?我猜 Chrome 有许多基于 Windows 的身份验证功能,因为在 Edge 浏览器上也会发生同样的事情,请问有什么想法吗?
我正在使用 ADFS,我需要发送 sAMAccountName。
当前使用“转换传入声明”规则:传入声明类型:Windows 帐户名称传出声明类型:名称 ID 传出名称 ID 格式:电子邮件(我知道格式实际上是错误的,但这是提供商想要的格式并且它有效)
不幸的是,发送的用户名包括域前缀,例如“域\用户名”。我怎样才能摆脱“域”?
我尝试通过
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> issue(Type = "sswindowsaccountname", Value = RegexReplace(c.Value, "^Domain\\", ""));
不幸的是,它不起作用。
有人知道我该如何解决吗?谢谢!
今天早上,我们注意到 Active Directory 联合服务已停止对所有基于 SAML 的依赖方信任(其中大约 8 个)执行 SAML 身份验证。通过同一 ADFS 服务器(服务器 2012 R2)进行的 Office 365 登录没有遇到问题。周末没有执行更新、重新启动或配置更改,并且 SAML 很高兴在 48 小时前进行身份验证。
依赖方信任之一,一个 DokuWiki 系统,吐出以下错误:“ADFS:签名验证失败。SAML 响应被拒绝”
第 3 方系统(SAML 身份验证)给出错误:“ADFS 签名验证失败,请联系您的系统管理员。”
因为我从尝试在此 ADFS 服务器上通过 SAML 进行身份验证的两个不同系统收到相同的错误,所以我排除了这些系统并将我的视野缩小到 ADFS 服务器。
在通过事件查看器的 ADFS 管理日志中,唯一出现的新事件是:
The SAML artifact resolution endpoint is not configured or it is disabled.
The artifact resolution service is not started.
User Action
If the artifact resolution service is required, use the AD FS Management snap-in to configure or enable the SAML artifact resolution endpoint.
这似乎是相关的......但我在 ADFS 控制台或通过 powershell 中没有看到任何关于工件解析的信息。此外,我在互联网上没有找到很多其他人有同样的问题,这总是让我认为我正在追踪一个红鲱鱼。
编辑以从 Get-ADFSProperties 添加证书翻转详细信息:
AutoCertificateRollover : True
CertificateCriticalThreshold : 2
CertificateDuration : 365
CertificateGenerationThreshold : 20
CertificatePromotionThreshold : 5
CertificateRolloverInterval : 720
Get-AdfsCertificate 显示:
Certificate : [Subject]
CN=*.ourdomain.edu, O=Our Org, L=Eugene, S=Oregon, C=US
[Issuer]
CN=DigiCert SHA2 High Assurance Server CA, OU=www.digicert.com, O=DigiCert Inc, C=US
[Serial Number]
(SerialNumber1)
[Not Before]
6/9/2019 5:00:00 PM
[Not After]
9/8/2020 5:00:00 AM
[Thumbprint]
(Thumprint goes here)
CertificateType : Service-Communications
IsPrimary : True
StoreLocation : LocalMachine
StoreName : My
Thumbprint : (Thumprint goes here)
Certificate : [Subject]
CN=ADFS Encryption - fs.our-org.edu
[Issuer]
CN=ADFS Encryption - fs.our-org.edu
[Serial Number]
(SerialNumber1)
[Not Before]
2/4/2020 2:13:25 AM
[Not After]
2/3/2021 2:13:25 AM
[Thumbprint]
(Thumprint goes here)
CertificateType : Token-Decrypting
IsPrimary : True
StoreLocation : CurrentUser
StoreName : My
Thumbprint : (Thumprint goes here)
Certificate : [Subject]
CN=ADFS Signing - fs.our-org.edu
[Issuer]
CN=ADFS Signing - fs.our-org.edu
[Serial Number]
(SerialNumber1)
[Not Before]
2/4/2020 2:13:27 AM
[Not After]
2/3/2021 2:13:27 AM
[Thumbprint]
(Thumprint goes here)
CertificateType : Token-Signing
IsPrimary : True
StoreLocation : CurrentUser
StoreName : My
Thumbprint : (Thumprint goes here)
Certificate : [Subject]
CN=ADFS Encryption - fs.our-org.edu
[Issuer]
CN=ADFS Encryption - fs.our-org.edu
[Serial Number]
(SerialNumber1)
[Not Before]
2/23/2019 8:52:39 PM
[Not After]
2/23/2020 8:52:39 PM
[Thumbprint]
(Thumprint goes here)
CertificateType : Token-Decrypting
IsPrimary : False
StoreLocation : CurrentUser
StoreName : My
Thumbprint : (Thumprint goes here)
Certificate : [Subject]
CN=ADFS Signing - fs.our-org.edu
[Issuer]
CN=ADFS Signing - fs.our-org.edu
[Serial Number]
(SerialNumber1)
[Not Before]
2/23/2019 8:52:40 PM
[Not After]
2/23/2020 8:52:40 PM
[Thumbprint]
(Thumprint goes here)
CertificateType : Token-Signing
IsPrimary : False
StoreLocation : CurrentUser
StoreName : My
Thumbprint : (Thumprint goes here)
你会带着这个去哪里?我很乐意根据需要挖掘任何细节或发布输出/日志。
谢谢!
此时我有一个问题,我想登录到 Google 身份的资产,但使用 Azure AD 作为 IdP(身份提供者)。
我已经设置了整个 SAML 环境,其中 google 作为 SP,Azure 作为 IdP。现在,这里的问题是当我调用 oauth2 登录到 google 时,我首先得到 google 登录页面,然后是 Microsoft 登录页面。显然这不是我们想要的。
我希望能够单击一个链接来访问谷歌应用程序,谷歌本身将我重定向到 Azure 登录页面,而无需使用谷歌的登录。
我正在尝试为 Bomgar 设备设置 ADFS 身份验证(Server 2012)。ADFS 和 Bomgar 都在 VMware Workstation 虚拟机中运行。ADFS 充当 IdP(位于https://wodan-kaveh.ingi.local),而 Bomgar 是依赖方(位于https://cenhelm)。现在一切都在 Windows HOSTS 中解决,因为这是一个演示环境。
我已将依赖方元数据从 Bomgar 导入到 ADFS,并将 FederationMetadata.xml 从 ADFS 导入到 Bomgar。Bomgar 成功地将浏览器引用到 ADFS 登录页面,我可以成功地与那里的 AD 用户进行身份验证,并且浏览器成功地从 ADFS 登录页面引用回 Bomgar;但是,此时,我收到来自 Bomgar 登录表单的身份验证失败消息,ADFS 记录事件 ID 364,Chrome 的 SAML 消息解码器记录 StatusCode 值为“urn:oasis:names:tc:SAML:2.0:status :InvalidNameIDPolicy”。
ADFS 错误表示不满足 NameIDPolicy。stackoverflow 上的问题 16403359 有一个答案指出 ADFS 事件日志中的这一行:“实际 NameID 属性:null。”;但是,我的 ADFS 依赖方信任配置中的 NameID 已填充。我可以在 Bomgar 的信任配置的“标识符”选项卡下看到这一点。
有 ADFS 经验的人知道这个 null NameID / InvalidNameIDPolicy 问题吗?
Encountered error during federation passive request.
Additional Data
Protocol Name:
Saml
Relying Party:
https://cenhelm
Exception details:
Microsoft.IdentityServer.Protocols.Saml.InvalidNameIdPolicyException: MSIS7070: The SAML request contained a NameIDPolicy that was not satisfied by the issued token. Requested NameIDPolicy: AllowCreate: True Format: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent SPNameQualifier: . Actual NameID properties: null.
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext context, Boolean isKmsiRequested)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext context, HttpSamlRequestMessage httpSamlRequest, SecurityTokenElement onBehalfOf, String relyingPartyIdentifier, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, String& samlpSessionState, String& samlpAuthenticationProvider)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSerializedToken(HttpSamlRequestMessage httpSamlRequest, WrappedHttpListenerContext context, String relyingPartyIdentifier, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)
# 3 - SAMLResponse via post binding, at 2016-09-28 18:45:14.920Z (UTC)
<samlp :Response ID="_5c2e83d2-dad5-45e8-ad6f-061dade744fd"
Version="2.0"
IssueInstant="2016-09-28T18:45:14.837Z"
Destination="https://cenhelm/saml/sso"
Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
InResponseTo="BG_0658b1fe7ad38b90b836fda526fc1853bd76485b"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://WODAN-KAVEH.ingi.local/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/2001/04/xmldsig-more#rsa-sha256" />
<ds :Reference URI="#_5c2e83d2-dad5-45e8-ad6f-061dade744fd">
<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#sha256" />
<ds:DigestValue>g5s0YwnOGbEqRgTqeJDVQxgj16OBVKixtvoESNGODPk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>RExxLxsgjwjbOlGST9lzrwGzj/WhvIvH4ZxP1YplnHNaXjGOKZQDrkuaW78EGdwjgoTKph5iBk1R21PLxHxIKx9DL/z/wpCDhOQzyfPTv39qo3OjEATwUakiukvL98y5AypdFtUSK7BzJvjN0TqgfpJpIWj6ritf0cGeSLl3SuGxlcWwrqcAgpxyIXL15rtQk6pGgIBszSGNeeN5kTKr+Z+kZu95uFF0M7yMbObYom2BXGA9KgOmGqnadCcw80nzI3g78E0I1ZWegmgmiBbnXIfDWuLDiblrLGOg3bJNZu4yflYH5JpjHQyWI9Hg05l3yT5dxOcFaij6XNnLi2XHkQ==</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIC6DCCAdCgAwIBAgIQcVPohCxdOadDkqvGcnn2bTANBgkqhkiG9w0BAQsFADAwMS4wLAYDVQQDEyVBREZTIFNpZ25pbmcgLSBXT0RBTi1LQVZFSC5pbmdpLmxvY2FsMB4XDTE2MDkwNzE5MzExOFoXDTE3MDkwNzE5MzExOFowMDEuMCwGA1UEAxMlQURGUyBTaWduaW5nIC0gV09EQU4tS0FWRUguaW5naS5sb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJw7gnkL08KQLatfhG36r4Bi1yCl9cfpM8S70eXIZ2ZH+ViIJAWcmlSWa63YKmRrkHoZjviUxlC1r/TMZ6MZKwAA0zACYniTiApjhgYi3A9U7jhuvC6IZhWxKeopt0siOYw8Bbkp4XTVBe9P2apyOjpNYc1SMeerYHKqNkATnx9/EGJD8nTR0Tz13VXYNw4Aepok4jE/U3LH9z7PJ0ZVUXGOXJ4anE/5L4lqtfJEYitoc/E2pML4Sqy4cWI4T9AfQlbxw2HGiDZbDtICKOp7Mi6PKHCNFS6ruxAReKt6ggYwPz21Sf6/9cAuMrnR/vvsrd20ZCjYuFora71FyGq/+Q0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEATlkg3oo9odZTjS0c90DMGXxGXA3TYUWZ/glIXP42Sdhi67OOqj8FaB6OFfEXJTn3i/PHbDiFh/oT19SwvdoFchB+hfNLAdFRPU0EsGoioWa1RvSWfNG6CMzXrdluiuoXpWVewgWs53+FPFIX8ACJcVvdxlM6vJn473TjEJPgVKnR9RYKoosmWCxDG5/aWLc4UkUuIoHk1lbnJ1VHPDr/vE8fy4XxzcfjPcmw5xQvx0FWbEqBBewVfGZuOQtMSPdKGQqDa71iIq3tuyIqe4e9jLEbgxV5NDEV63yl8rkKk0HRDpS9jO5eatnUEX7fElrBXWBjapZ+6B55DY4JGlUbLA==</ds:X509Certificate>
</ds:X509Data>
</KeyInfo>
</ds:Signature>
<samlp:Status>
<samlp :StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Requester">
<samlp :StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy" />
</samlp:StatusCode>
</samlp:Status>
</samlp:Response>
RelayState
https://cenhelm/saml
# 2 - SAMLRequest via redirect binding, at 2016-09-28 18:45:14.797Z (UTC)
<samlp :AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="BG_0658b1fe7ad38b90b836fda526fc1853bd76485b"
Version="2.0"
IssueInstant="2016-09-28T18:45:01Z"
Destination="https://wodan-kaveh.ingi.local/adfs/ls/"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://cenhelm/saml/sso">
<saml:Issuer>https://cenhelm</saml:Issuer>
<samlp :NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
AllowCreate="true" />
</samlp:AuthnRequest>
RelayState
https://cenhelm/saml
# 1 - SAMLRequest via redirect binding, at 2016-09-28 18:45:01.643Z (UTC)
<samlp :AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="BG_0658b1fe7ad38b90b836fda526fc1853bd76485b"
Version="2.0"
IssueInstant="2016-09-28T18:45:01Z"
Destination="https://wodan-kaveh.ingi.local/adfs/ls/"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://cenhelm/saml/sso">
<saml:Issuer>https://cenhelm</saml:Issuer>
<samlp :NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
AllowCreate="true" />
</samlp:AuthnRequest>
RelayState
https://cenhelm/saml
SAML Message Decoder
CLEAR ALL
SP 运行 Shibboleth 2.5.6。对于一个特定的 IdP,我有以下属性映射:
<Attribute name="role"
nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"
id="role" />
<Attribute name="urn:mace:dir:attribute-def:givenName"
nameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri"
id="givenName" />
我收到一封电报,其中包含:
<AttributeStatement>
<Attribute Name="role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Educator</AttributeValue>
</Attribute>
<Attribute Name="urn:mace:dir:attribute-def:givenName" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri">
<AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">intraguest</AttributeValue>
</Attribute>
</AttributeStatement>
哪些日志:
Shibboleth.AttributeExtractor.XML : creating mapping for Attribute role, Format/Namespace:urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
Shibboleth.AttributeExtractor.XML : creating mapping for Attribute urn:mace:dir:attribute-def:givenName
...
DEBUG Shibboleth.AttributeDecoder.String [1]: decoding SimpleAttribute (role) from SAML 2 Attribute (role) with 1 value(s)
INFO Shibboleth.AttributeExtractor.XML [1]: skipping unmapped SAML 2.0 Attribute with Name: urn:mace:dir:attribute-def:givenName, Format:urn:mace:shibboleth:1.0:attributeNamespace:uri
为什么被givenName
跳过,当它name
和nameFormat
匹配?
我注意到Format/Namespace
“创建映射”日志行中缺少注释givenName
,但我认为这是因为给定的nameFormat
匹配默认值。
更新:
IdP 是 PingFederate 源,其元数据声明为 SAML 2。以下是元数据的相关摘录:
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="..." entityID="...">
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Attribute xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Name="urn:mace:dir:attribute-def:givenName" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
<saml:Attribute xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Name="role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"/>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
我有一个已经开发了大约一个月的 Spring SAML 项目。我已与 ADFS 集成,一切运行良好。我遇到了一个间歇性错误,该错误正在成为问题,因为我必须等待它似乎决定重新开始工作。它现在显示错误的频率超过了它的工作频率。使用任意数量的测试 AD 帐户登录后,我看到此错误。
事件日志中的错误 ID 111
The Federation Service encountered an error while processing the WS-Trust request.
Request type: http://schemas.microsoft.com/idfx/requesttype/issue
Additional Data
Exception details:
System.ArgumentOutOfRangeException: Not a valid Win32 FileTime.
Parameter name: fileTime
at System.DateTime.FromFileTimeUtc(Int64 fileTime)
at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetPasswordExpiryDetails(SafeLsaReturnBufferHandle profileHandle, DateTime& nextPasswordChange, DateTime& lastPasswordChange)....
ADFS 事件日志中的错误 364
Encountered error during federation passive request.
Additional Data
Protocol Name:
Saml
Relying Party:
https://localhost:8443/elsso/saml/metadata/alias/serviceprovider
Exception details:
System.ArgumentOutOfRangeException: Not a valid Win32 FileTime.
Parameter name: fileTime
at System.DateTime.FromFileTimeUtc(Int64 fileTime)
at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetPasswordExpiryDetails(SafeLsaReturnBufferHandle profileHandle, DateTime& nextPasswordChange, DateTime& lastPasswordChange)
at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetLsaLogonUserInfo(SafeHGlobalHandle pLogonInfo, Int32 logonInfoSize, DateTime& nextPasswordChange, DateTime& lastPasswordChange, String authenticationType, String issuerName)
at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetLsaLogonUser(UserNameSecurityToken token, DateTime& nextPasswordChange, DateTime& lastPasswordChange, String issuerName)....
服务提供者、AD、ADFS、证书和 SAML 断言的配置是正确的。当我没有收到此错误时,至少它们 90% 的时间都在工作。
我在失败时尝试过的方法没有帮助
截至目前,它每隔几个小时工作几分钟,然后在其余时间失败。
我真的很难过,任何有关解决此问题的方法的建议将不胜感激。
更新 我无法以本机方式登录 ADFS,这进一步表明这不是服务提供商的问题,而是 ADFS/AD 本身的问题。