Мы используем HTTP-привязку перенаправления для обеспечения проверки подлинности SAML с использованием гема omniauth-saml. В целях тестирования мы настроили ADFS в экземпляре Windows и создали URL-адрес для страницы входа.
Мы можем войти в систему, используя некоторые учетные данные, напрямую нажав URL в браузере.
Но когда мы используем gem omniauth-saml для обеспечения HTTP-привязки перенаправления , тогда отображается ошибка «Недопустимый URI». Вот обратный след ошибки:
System.UriFormatException: Invalid URI: The format of the URI could not be determined.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlSignInContext.ValidateCore()
at Microsoft.IdentityServer.Web.Protocols.ProtocolContext.Validate()
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.GetRequiredPipelineBehaviors(ProtocolContext pContext)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.EvaluateHomeRealm(PassiveProtocolHandler protocolHandler, ProtocolContext protocolContext)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)
Вот URL SAML:
https://ads.DOMAIN.com/adfs/ls/idpinitiatedSignOn.aspx?SAMLRequest=fZHBbsIwEER%2FJTefEjtpwMEiSFG5oFJVAsqhl8pxXLDi2KnXRnx%2BHVAleulxtDNPs7tL4IMeWRP82ezkd5DgkwZAOq%2BsebYGwiDdXrqLEvJ9t63R2fuRYSzFjNCuzDNzcrbPlMUhhgDzCMITEwuudctFj5J1hCrDJ%2BI9DxHAO8h6sPoiIRN2iPoLsAasulEZ5RX3sturk3kzGYfxipLNukafdJ7n7YyWKVks8rRsiUx5O6%2FSednmtGwFoQWNVoAgNwY8N75GBcmrlFRpUR0IZU8FK2YfKDnGtrdCRUZQch20ATb1rlFwhlkOCpjhgwTmBds3r1sWjYz%2FnuYxMv6fGZ31VliNVsvJzW7t3OrlvvzBBfBL%2FDi5q79PWf0
Вот конфигурация Omniauth SAML:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :saml,
:assertion_consumer_service_url => "https://www.google.com", # Tried some more callback URLs as well
:issuer => "MyTrust",
:idp_sso_target_url => "https://ads.DOMAIN.com/adfs/ls/idpinitiatedSignOn.aspx",
:idp_cert => '-----BEGIN CERTIFICATE-----
MIIDBzCCAe+gAwIBAgIJAIuOuO5YI79hMA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNV
BAMMD2Fkcy5rc29s.........
-----END CERTIFICATE-----'
end
Также мы используем самоподписанный сертификат для ADFS . Но я не думаю, что это должно быть проблемой, поскольку в журналах не отображается ошибка, связанная с сертификатом.