关于org.apache.wss4j 2.3.0中AuthDecisionStatementBean.setEvidence方法的参数类型咨询
关于org.apache.wss4j 2.3.0中AuthDecisionStatementBean.setEvidence方法的参数类型咨询
我之前也踩过WSS4J文档模糊的坑,特意翻了2.3.0版本的源码和实际项目中的使用场景,给你理清楚这个问题:
虽然官方文档只写了参数类型是Object,但结合SAML 1.1的规范和WSS4J的实际实现,你实际应该传入的是AssertionBean对象,或者List<AssertionBean>集合。
Evidence在SAML规范里的作用是引用已有的身份断言,作为当前授权决策的依据,而WSS4J里用AssertionBean来封装SAML断言的结构数据。
结合你的代码,补全setEvidence的使用示例:
// 先创建一个用作证据的AssertionBean实例,设置必要属性 AssertionBean evidenceAssertion = new AssertionBean(); evidenceAssertion.setIssuer("your-issuer-entity-id"); evidenceAssertion.setSubject(new SubjectBean("subject-id")); // 可以根据需求设置断言的签名、有效期等其他属性 // 传入单个AssertionBean或者其列表都可以 authDecisionStatementData.setEvidence(List.of(evidenceAssertion)); // 或者直接传单个对象 // authDecisionStatementData.setEvidence(evidenceAssertion);
之所以文档写Object类型,是因为WSS4J的这个设计留了兼容扩展的空间,但在实际的业务场景中,只有AssertionBean(或其集合)能被后续的SAML断言生成逻辑正确解析并转换成符合规范的Evidence元素。
内容来源于stack exchange
相关产品推荐
相关产品推荐

