场景:
1)浏览器(用户)从服务提供商(SP)请求资源.
2)SP重定向(使用SAML请求)到身份提供商(IdP).
3)自首次登录以来,用户向(IdP)提供他/她的有效凭证.
4)然后IdP将浏览器(包含SAML令牌的SAML响应)重定向到SP页面.
我有两个问题:
A.在步骤4中,浏览器是否存储或缓存SAML响应和/或SAML令牌?
B.如果是,那么什么样的东西(属性?超时?协议?)阻止我获取存储的SAML令牌.然后将其复制到另一台计算机(使用新会话)并使用该令牌登录到同一个SP?
我想编写一个Web应用程序,它使用由身份提供者发布的SAML 2.0令牌进行身份验证.据我所知,根据这个问题,PHP世界中有一个可行的解决方案,使用simpleSAMLphp.
Java世界中是否存在等效方法?常见的servlet容器或应用程序服务器是否有开箱即用的解决方案和/或教程?
我是SSL证书的新手.对我到目前为止所做的事情有点谨慎.我正在创建一个使用SSO来验证使用PHP 5.4的用户的应用程序.我拥有:党提供的证书(.pfx).在POST变量中加密SAML.
解密的xml几乎与SAML类似:为什么签名中的证书?
我需要验证响应是来自经过验证的提供者.我在google搜索时已经知道我需要.pem而不是.pfx,所以我已经使用ssl命令将.pfx文件转换为.pem了.我使用了http://www.php.net/manual/es/function.openssl-verify.php#62526中的代码.这是我的代码.
$encxml=$_POST['SAMLResponse'];
$xml = new SimpleXMLElement(base64_decode($encxml));
$signature = ((string)$xml->Signature->SignatureValue);
var_dump($signature);
//do I need to do something with this X509Certificate value embedded in xml??
$cert = ((string)$xml->Signature->KeyInfo->X509Data->X509Certificate);
var_dump($cert);
//Or I need
$fp = fopen("xyz.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
print_r($priv_key);
$ok = openssl_verify($xml, $signature, $priv_key);
Run Code Online (Sandbox Code Playgroud)
所以我应该忽略嵌入在xml中的X509Certificate还是我需要检查它... openssl_verify会不会足够?我是在正确的道路上吗?请任何指导将不胜感激.
我正在尝试通过python登录我大学的服务器,但我完全不确定如何生成适当的HTTP POST,创建密钥和证书,以及我可能不熟悉的其他部分需要符合SAML规范.我可以用我的浏览器登录就好了,但我希望能够使用python登录和访问服务器内的其他内容.
作为参考,这是该网站
我已经尝试使用mechanize登录(选择表单,填充字段,通过mechanize.Broswer.submit()点击提交按钮控件等)无济于事; 登录站点每次都会回来.
在这一点上,我愿意用最适合该任务的语言实现解决方案.基本上,我想以编程方式登录SAML经过身份验证的服务器.
在SAML2规范中,断言中有几个地方可以指定生命周期.
<SubjectConfirmationData>元素包含一个NotOnOrAfter属性.<Conditions>元素包含一个NotOnOrAfter属性.<AuthnStatement>元素包含一个SessionNotOnOrAfter属性.他们每个人的意义是什么?它们如何相互关联?
具体来说,当......时必须检查哪一个
每个NotOnOrAfter都在SAML2核心规范中描述.我在这里列出了我能找到的描述这些属性的部分.
无法再确认主题的时刻.时间值以UTC编码,如第1.3.3节所述.
请注意,可选的NotBefore和NotOnOrAfter属性指定的时间段(如果存在)应该落在元素的NotBefore和NotOnOrAfter属性指定的整个断言有效期内.如果两个属性都存在,则NotBefore的值必须小于(早于)NotOnOrAfter的值.
指定断言到期的时刻.时间值以UTC编码,如第1.3.3节所述.
NotBefore和NotOnOrAfter属性在其使用的配置文件的上下文中指定断言有效性的时间限制.他们不保证声明中的陈述在整个有效期内是正确或准确的.NotBefore属性指定有效期间隔开始的时刻.NotOnOrAfter属性指定有效期间隔结束的时刻.如果省略NotBefore或NotOnOrAfter的值,则认为它未指定.如果未指定NotBefore属性(并且如果提供的所有其他条件评估为有效),则断言对于NotOnOrAfter属性指定的时间点之前的任何时间的条件都是有效的.如果未指定NotOnOrAfter属性(并且如果提供的所有其他条件都评估为有效),则断言对于NotBefore属性指定的时间段内的条件是有效的,没有到期.如果两个属性都未指定(并且如果提供的任何其他条件评估为有效),则断言在任何时候都与条件有效.
如果两个属性都存在,则NotBefore的值必须小于(早于)NotOnOrAfter的值.
指示与封闭断言派生的主题的会话的上限.时间值以UTC编码,如第1.3.3节所述.此属性与断言中可能存在的NotOnOrAfter条件属性之间没有必需的关系.它留给配置文件根据此属性为依赖方提供特定的处理规则.
如果我使用我的私钥对其进行签名并通过SSL发送,是否有必要加密SAML请求?或者更好的做法是使用我的私钥对其进行签名,使用身份提供程序公钥对其进行加密并通过SSL进行传输?
我已经安装了
saml2aws& awscli,以连接 OKTA 系统之一。
我在配置中做了一些更改,想要重新加载新的,但在如何从会话中注销方面遇到了困难
我有一个Drupal网站,我正在为客户服务.我被要求使用单点登录使用SAML2(我将成为服务提供商,我的客户将是身份提供商).
到目前为止我发现的最好的事情是
SimpleSAMLPHP https://ow.feide.no/simplesamlphp:drupal
要么
Shibboleth - http://drupal.org/project/shib_auth
通过查看这些文档,看起来Shibboleth模块可能会更进一步,但我不确定您是否可以将Shibboleth连接到SAML.你能?或者您是否需要连接到Shibboleth身份提供商?
SimpleSAML模块看起来不错,除了它似乎需要memcache,我宁愿不使用它.
谢谢!
我正在实现一个使用Okta作为身份提供者的SAML 2.0服务提供者.我想配置断言使用者服务(ACS)URL,以便我的服务提供者应用程序中的SAML 2.0反映在断言中.
但是,我注意到Okta身份提供程序改为发送在Okta配置中配置的SSO端点,并忽略实际发送的ACS.此外,我得到一个错误,也许SP的ACS与那里的元数据不匹配.
如果ACS URL不是向IDP发送短ID以使其反映在断言中的正确方法,则可以使用其他机制来实现此目的.
例:
SP应用程序发送的SAML 2.0 SAMLRequest是:
assertion_consumer_service_url:https://host.com:port/saml/consume?ENTITYID = N&MYNAME =用户名
Identity Provider上的配置具有元数据:
单点登录URL:https://host.com:port/saml/consume?entityId = N
请注意,myName从一个请求更改为下一个请求,因为这是我们验证响应的name_id与发送的原始用户名相匹配的方式.
此外,如果服务提供商有办法让身份提供商断言SP管理的名称(例如用户名),那么这对我们的需求就可以了.如何指定这个?
谢谢
我试图抓取网站,更具体地Google Site使用ManifoldCF具有SAML认证和索引抓取的数据到Apache Solr实现.但是当我抓取URL时,它会让我302重定向到登录页面然后说RESPONSECODENOTINDEXABLE.
我不确定我是否正确认证.在manifoldCF中,我们有HTTP basic身份验证选项NTLM authentication和Session-based访问凭证身份验证方法.我使用的Session based身份验证方法更像是基于表单的身份验证而不是SAML身份验证.
有没有人使用带有SAML身份验证的manifoldCF来抓取网站?如果没有manifoldCF,有人能够通过Apache Nutch实现这一点,因为我担心,它也只提供HTTP基本Digest和NTLM身份验证.
任何见解都会有所帮助.如果有人认为可以轻松完成,可以提供有关该问题的更多信息.基本上,当我抓取https://sites.google.com/a/my-sub-domain.com时,它会重定向到SSO登录页面,并且抓取工具拒绝抓取任何更多,从而产生302错误.这是一个基于内联网的网站.