如何在RestEasy服务中使用OpenSAML处理SAML v2响应

时间:2018-11-19 06:14:35

标签: java saml resteasy

我已经从此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();
}

1 个答案:

答案 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