我正试图为OpenAM撰写SAML2 AuthnRequest。我有一个URL,我可以对其执行get操作,但在将其组合到XHTML post表单中遇到问题。
使用查询字符串的工作URL是
http://internal.authhost.com: 8080/opensso/idpssoinit ? NameIDFormat = urn: oasis: names: tc: SAML: 2.0: nameid-format: transient& metaAlias = % 2 fmyrealm % 2 fidp& spEntityID 3 = https % % 2 f % 2 fsaml.salesforce.com&绑定=瓮% 3 aoasis % 3安南% 3 atc % 3 asaml % 3 a2.0 % 3约束力% 3 ahttp-post& RelayState = webj_captureCustomerDetails
我的html表单看起来像:
<form action="http://internal.authhost.com:8080/opensso/idpssoinit" method="post" target="new">
<input type="text" name="SAMLRequest" value="PHNhbWxwOkF1dGhuUmV..."></input>
<input type="text" name="RelayState" value="webj_captureCustomerDetails"></input>
<input type="submit"/>
</form>
, SAMLRequest的值是
的base64编码表示形式。<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_d7607d551380ac97853a6ff4907c4ef01219be97dd" Version="2.0"
IssueInstant="2008-05-27T07:46:06Z" ForceAuthn="true" IsPassive="false"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://cs4.salesforce.com/?saml=lkjhkljhkljhkjhlkjh"
ProviderName="https://saml.salesforce.com">
<saml:Issuer>https://saml.salesforce.com</saml:Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
AllowCreate="true"/>
</samlp:AuthnRequest>
发出此表单会导致OpenAM报错"Service Provider ID is null"
我可以立即看到XML不包含metaAlias=/MYRealm/idp参数,但是消息表明它也找不到spEntityID=https://saml.salesforce.com参数。
请告知这两个属性(metaAlias和spEntityID)需要在XML中指定的位置。
指定OpenAM COT/IdP配置如何映射到SAML AuthnRequest消息的链接也将受到赞赏。
问题是我访问了错误的URL,应该点击spssoinit,因为它是服务提供商发起的SSO