我们必须在J2ee应用程序中实现SAML SP提供程序,因此我们下载了onelogin核心jar来开始使用。我们通过研究Shibboleth Wiki手动生成了SP metadata.xml文件,该文件主要包含唯一的实体ID,ACS URL和一些断言属性(这些属性将在IDP的响应中发送回去)。
我们从IDP收到的meta.xml使用IDPSSODescriptor角色,并定义了2个元素,其中包含X509证书,一个元素为use =“ signing”,另一个元素为=“ encryption”。
我们将使用的方法是-
1)使用onelogin java-saml库创建AuthenticationRequest XML,并在用户单击应用程序页面上的URL时将此对象发送到HTTP GET中的IDP。
我的问题是,由于IDP的元数据已定义了公共密钥(在KeyDescriptor-> KeyInfo-> X509Data-> X509Certificate元素内),在发送请求之前,我们是否需要使用这些密钥对Auth Request XML进行加密和签名?
2)一旦从IDP返回HTTP POST响应,我们的Servlet就将从请求中获取SAMLResponse查询参数,将其解密,解析响应并验证其是否成功。
请推荐一本有关Java SAML 2.0实现的好书或PDF。
谢谢。