当我运行以下代码(使用 ComponentSpace Saml 2.0 lib)时,Fiddler 向我显示 SAMLRequest 的值是这样加密的,<input type="hidden" name="SAMLRequest" value="PHNhbWxwOkF1dGhu....">
这是非常预期的行为。该代码实现了SSO SAML 2.0 POST配置文件的第一步。请注意,代码中没有指定证书密钥来进行任何类型的加密,所以我想知道 ComponentSpace lib 如何决定选择哪一个?
var authnRequest = new AuthnRequest
{
Destination = @"https://idpserver/...",
Issuer = new Issuer(@"https://sp/..."),
ForceAuthn = false,
NameIDPolicy = new NameIDPolicy(null, null, true),
ProtocolBinding = SAMLIdentifiers.BindingURIs.HTTPPost,
AssertionConsumerServiceURL = @"https://sp/..."
};
var relayState = RelayStateCache.Add(new RelayState(@"https://sp/...", null));
ServiceProvider.SendAuthnRequestByHTTPPost(
new HttpResponseWrapper(_context.Response),
@"https://idpserver/...",
authnRequest.ToXml(),
relayState);
维基百科所说的只是“ SAMLRequest 参数的值是 base64 编码”。没有关于密钥用于编码的信息。