关于SAML的一些事情。 在此article中,有一节: SP的断言消费者服务现在将包含该工件的SAML消息发送到IdP的工件解析服务端点。使用同步SOAP消息交换执行此交换。
但我只是想知道,它没有定义Artifact Resolution Service端点在SP的任何位置,SP如何知道在哪里发送?
我刚刚对tableau的saml sso进行了测试,我的系统充当IDP,当我的idp发送重定向到sp(tableau服务器)的ASSERTION CONSUMER SERVICE时,它从不调用我的idp的Artifact Resolution Service,所以我很困惑。
这是我从互联网上复制的一些代码:
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"和#34; AAQAAMF ... 0ECfpNEVLg%3D"是和如何更改它们,这是sp不调用工件解析的原因吗?我已经将idp的元数据提供给sp,但它不包含工件解析位置,似乎我无法添加它。
答案 0 :(得分:0)
一切都取决于SAML元数据。您的SP应具有其正在使用的IdP的元数据,并且IdP的元数据将告知SP Artefact Resolution Service所在的位置。 e.g。
<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp.com/artifactresolution" index="0"/>