Single sign on SAML2.0:如何配置断言使用者服务URL

Single sign on SAML2.0:如何配置断言使用者服务URL,single-sign-on,saml,Single Sign On,Saml,我正在实现一个SAML2.0服务提供者,它使用Okta作为身份提供者。我想配置断言消费者服务(ACS)URL,以便我的服务提供商应用程序中的SAML2.0能够反映回断言中 但是,我注意到Okta标识提供程序反而发送在Okta配置中配置的SSO端点,并忽略实际发送的ACS。另外,我得到一个错误,可能是SP的ACS与那里的元数据不匹配 如果ACS URL不是向IDP发送短ID以便其在断言中反映的正确方法,那么可以使用什么其他机制来实现此目的 例如: SP应用程序发送的SAML 2.0 SAMLReq

我正在实现一个SAML2.0服务提供者,它使用Okta作为身份提供者。我想配置断言消费者服务(ACS)URL,以便我的服务提供商应用程序中的SAML2.0能够反映回断言中

但是,我注意到Okta标识提供程序反而发送在Okta配置中配置的SSO端点,并忽略实际发送的ACS。另外,我得到一个错误,可能是SP的ACS与那里的元数据不匹配

如果ACS URL不是向IDP发送短ID以便其在断言中反映的正确方法,那么可以使用什么其他机制来实现此目的

例如:

SP应用程序发送的SAML 2.0 SAMLRequest为:

断言\消费者\服务\ url: https://host.com:port/saml/consume?entityId=N&myName=username

标识提供程序上的配置包含元数据:

单一登录URL: https://host.com:port/saml/consume?entityId=N

请注意,myName会从一个请求更改到下一个请求,因为这是我们验证响应是否具有与发送的原始用户名匹配的name_id的方法

此外,如果服务提供商有办法让身份提供商声明SP管理的名称(如用户名),那么就可以满足我们的需要。如何具体说明这一点


感谢SAML中的,假定SP的ACS是静态的。要将响应与原始AuthnRequest关联起来,您应该保存传出AuthnRequest的ID,然后使用响应中的
来处理收到的响应


SP可以向AuthnRequest添加一个主题,告诉IdP您想要验证的用户名。正如Anders Abel所指出的,ACS被假定为静态的。然而,在开发环境中,可能需要对不同的测试系统进行更动态的响应

这是我的saml20-sp-remote.php,我使用它来响应每个请求SSO身份验证的sp,利用其请求的属性
AssertionConsumerService
。 我想这对生产是不安全的

simplesamlphp/metadata/saml20-sp-remote.php:

<?php
/**
 * SAML 2.0 remote SP metadata for SimpleSAMLphp.
 *
 * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-sp-remote
 */
$acs = \SAML2\Binding::getCurrentBinding()->receive()->getAssertionConsumerServiceURL();
if (!$acs) $acs = 'some_fallback_url';

$metadata['idp_identifier'] = array(
    'AssertionConsumerService' => $acs,
    'simplesaml.nameidattribute' => 'uid'
);

请不要同时发布多个问题,最好将每个问题作为单独的问题发布。