我已经从此link中了解了SAML v2的工作方式。我看到我需要一个断言消费者服务URL,该URL将接收SAML v2响应。
当前,我提供的URL是使用Java开发并部署在Tomcat上的RESTEasy端点。假设将在此终结点处收到SAML v2响应,那么我应该为终结点提供哪种方法类型(GET或POST)以及应该使用什么方法(XML或JSON)
解析SAML v2响应的端点内部的逻辑应该是什么?我知道可以在Java中使用OpenSAML,但是我也可以使用它吗?
我的Java代码如下
@POST
@Path("/getDetails")
@Consumes("application/xml")
public Response getDetails(String xml,@HeaderParam("Authorization") String authorization){
//how to consume and decrypt SAML response over here?
return Response.status(Constants.RESPONSE_CODE_OK).entity(Constants.DATA_OK).build();
}
答案 0 :(得分:1)
您实际上可以指定您的断言消费者服务URL是在元数据中发布还是重定向(GET)。
在元数据中,提供以下标签:
<AssertionConsumerService
index="1"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://LoadBalancer-9.siroe.com:3443/
federation/Consumer/metaAlias/sp"/>
它应该接受XML,因为SAML v2响应将采用特定格式的XML。
您还可以使用onelogin saml API,
https://github.com/onelogin/java-saml
要了解示例请求和响应,可以使用以下链接: https://www.samltool.com/online_tools.php
对于opensaml,您可以从下面的链接中获取示例代码,并在它的帮助下,拥有自己的实现 http://www.capcourse.com/Library/OpenSAML/index.html