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

How to handle SAML v2 response using OpenSAML in RestEasy service

我已从这篇 link 中了解到 SAML v2 的工作原理。我看到我需要一个断言消费者服务 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();
}

您实际上可以在元数据中指定断言消费者服务 URL 是 post 还是重定向 (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

要了解示例请求和响应,您可以使用以下 link: https://www.samltool.com/online_tools.php

对于 opensaml,您可以从下面获得示例代码 link 并借助它,您可以拥有自己的实现 http://www.capcourse.com/Library/OpenSAML/index.html