我正在研究Spring SAML和Microsoft ADFS 3.0之间的集成。甚至它已经在Spring SAML的留档中声明为:
双击提供程序打开它,选择tab Advanced并将“安全哈希算法”更改为SHA-1
我知道Spring SAML目前只支持SHA-1作为哈希算法,但我的要求是使用SHA-256。如果我尝试仅在ADFS中为SHA-256配置,它将不起作用。我想我得对Spring SAML做点什么。你知道怎么做吗?
我建议参考以下GitHub示例项目:https://github.com/choonchernlim/spring-security-adfs-saml2
它提供了ADFS专用的配置信息,并详细说明了如何启用SHA-256签名。
您应该将Spring Security配置配置为使用SHA-256
签名算法。
您可以重写SAMLBootstrap或配置初始化bean
,如下所示:
Spring配置:
<bean id="samlProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:saml.properties" />
</bean>
<bean class="your.package.SAMLConfigurationBean">
<property name="signatureAlgorithm" value="${saml.signatureAlgorithm:SHA1}" />
</bean>
属性文件(saml.properties):
saml.signatureAlgorithm=SHA256
初始化bean:
package your.package;
import org.opensaml.Configuration;
import org.opensaml.xml.security.BasicSecurityConfiguration;
import org.opensaml.xml.signature.SignatureConstants;
import org.springframework.beans.factory.InitializingBean;
public class SAMLConfigurationBean implements InitializingBean {
private String signatureAlgorithm ;
private String digestAlgorithm;
public void setSignatureAlgorithm(String algorithm) {
switch (algorithm) {
case "SHA256" :
signatureAlgorithm = SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256;
digestAlgorithm = SignatureConstants.ALGO_ID_DIGEST_SHA256;
break;
case "SHA512" :
signatureAlgorithm = SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA512;
digestAlgorithm = SignatureConstants.ALGO_ID_DIGEST_SHA512;
break;
default:
signatureAlgorithm = SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1;
digestAlgorithm = SignatureConstants.ALGO_ID_DIGEST_SHA1;
}
}
@Override
public void afterPropertiesSet() throws Exception {
BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration.getGlobalSecurityConfiguration();
config.registerSignatureAlgorithmURI("RSA", signatureAlgorithm);
config.setSignatureReferenceDigestMethod(digestAlgorithm);
}
}
您也可以跳过可配置部分,满足于此:
初始化bean:
package your.package;
import org.opensaml.Configuration;
import org.opensaml.xml.security.BasicSecurityConfiguration;
import org.opensaml.xml.signature.SignatureConstants;
import org.springframework.beans.factory.InitializingBean;
public class SAMLConfigurationBean implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration.getGlobalSecurityConfiguration();
config.registerSignatureAlgorithmURI("RSA", SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
config.setSignatureReferenceDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA256);
}
}
我正在尝试使用亚马逊的弹性代码转换器。这里我需要sha-256散列一个字符串;http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html 我已经尝试了我在网上找到的任何方法,但我找不到与页面和一些在线哈希网站提供的相同的结果。 下面是要散列的字符串,您可以从上面的链接中找到; 以下是预期结果: 3
因此,我试图找出如何在ios上进行hmacshad256哈希,因为这是我为wcf服务api所做的哈希。我一直试图寻找一些关于它的信息,但通常只是最终得到一个SHA-256哈希。
行是我构造字符串并将其转换为byte[]以转换为SHA-256散列的地方,其中tmpSessionId是我从HTTP请求中获取的值。产生的散列将在以后的请求中发送。
问题内容: 我一直在使用CryptoJS(即)库在前端进行SHA-3哈希处理。(请参阅http://crypto- js.googlecode.com/svn/tags/3.1.2/build/rollups/sha3.js ) 我想知道是否有任何Java库等效项?但是到目前为止,我还没有找到任何东西。Java SHA-3示例也不是很多。 具有SHA-3,但在Eclipse下不可见。另外,我不确定
问题内容: 我需要计算大文件(或其一部分)的SHA-256哈希。我的实现工作正常,但比C 的CryptoPP计算要慢得多(25分钟vs. 30 GB文件的10分钟)。我需要的是在C 和Java中执行时间相似,因此散列几乎可以同时准备好。我也尝试了Bouncy Castle的实现,但是它给了我相同的结果。这是我如何计算哈希值: 问题答案: 我的解释可能无法解决您的问题,因为它很大程度上取决于您的实际
问题内容: 我在glassfish v3.0.1 b22中使用jdbcRealm进行安全保护。通过以下博客对其进行设置,使其使用我数据库中的USER表进行身份验证:http : //blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication。如果我将摘要算法保留为纯文本,那么我可以正常工作。但是,当我尝试将SHA-256用于摘要