SAML,sp 如何知道工件解析服务端点在哪里?

SAML,how sp know where the Artifact Resolution Service endpoint is?

关于 SAML 的一些事情。 在这个 article 中,有一个部分: SP 的断言消费者服务现在将包含工件的 SAML 消息发送到 IdP 的工件解析服务端点。此交换是使用同步 SOAP 消息交换执行的。

但我只是想知道,它没有在 SP 的任何地方定义 Artifact Resolution Service 端点的位置,SP 怎么知道发送到哪里?

我刚刚对tableau的saml sso进行了测试,我的系统充当IDP,当我的idp发送重定向到sp(tableau server)的ASSERTION CONSUMER SERVICE时,它从不调用我的工件解析服务idp,所以我很困惑。

这是我从网上复制的一些代码:

public class SingleSignOnServlet extends HttpServlet {
    private static Logger logger = LoggerFactory.getLogger(SingleSignOnServlet.class);

    @Override
    protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect(SPConstants.ASSERTION_CONSUMER_SERVICE + "?SAMLart=AAQAAMFbLinlXaCM%2BFIxiDwGOLAy2T71gbpO7ZhNzAgEANlB90ECfpNEVLg%3D");
    }

}

我只是复制,不知道"SAMLart"和"AAQAAMF...0ECfpNEVLg%3D"是什么以及如何更改它们,这是sp不调用Artifact Resolution的原因吗?我给了idp` s 元数据到 sp,但它不包含工件解析位置,而且我似乎无法添加它。

一切都取决于 SAML 元数据。您的 SP 应该有它正在使用的 IdP 的元数据,IdP 的元数据将告诉 SP Artefact Resolution Service 所在的位置。例如

<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp.com/artifactresolution" index="0"/>