1

我正在使用组件空间库创建 SAML 请求并对其进行签名然后将其发布到 URL,但是请求未成功发布,因为我需要使用RSA算法密钥但到目前为止我发现它在 SamlKeyAlgorithm 中不可用,我也需要更改下面到 2048 的密钥大小是我用来发送请求的方法。

    private void SendTawtheeqRequest()
    {
        string ConsumerServiceUrl = "https://tawtheeq.sa:8443/identity-gateway-test/ReceiveSAMLRequest";

        // Create a SAML response object.
        Response samlResponse = new Response();
        // Assign the consumer service url.
        samlResponse.Destination = ConsumerServiceUrl;
        Issuer issuer = new Issuer(GetAbsoluteUrl("~/"));
        samlResponse.Issuer = issuer;
        samlResponse.Status = new Status(SamlPrimaryStatusCode.Success, null);
        Assertion samlAssertion = new Assertion();
        samlAssertion.Issuer = issuer;
        // Use the local user's local identity.
        Subject subject = new Subject(new NameId(User.Identity.Name));
        SubjectConfirmation subjectConfirmation = new SubjectConfirmation(SamlSubjectConfirmationMethod.Bearer);
        SubjectConfirmationData subjectConfirmationData = new SubjectConfirmationData();
        subjectConfirmationData.Recipient = ConsumerServiceUrl;
        subjectConfirmation.SubjectConfirmationData = subjectConfirmationData;
        subject.SubjectConfirmations.Add(subjectConfirmation);
        samlAssertion.Subject = subject;
        // Create a new authentication statement.
        AuthnStatement authnStatement = new AuthnStatement();
        authnStatement.AuthnContext = new AuthnContext();
        authnStatement.AuthnContext.AuthnContextClassRef = new AuthnContextClassRef(SamlAuthenticationContext.Password);
        samlAssertion.Statements.Add(authnStatement);

        X509Certificate2 encryptingCert = new X509Certificate2(Path.Combine(HttpRuntime.AppDomainAppPath, "my-bank1-public.cer"));
        EncryptedAssertion encryptedSamlAssertion = new EncryptedAssertion(samlAssertion, encryptingCert, new EncryptionMethod(SamlKeyAlgorithm.TripleDesCbc));



        samlResponse.Assertions.Add(encryptedSamlAssertion);
        samlResponse.Assertions.Add(samlAssertion);
        samlResponse.SendHttpPost(Response.OutputStream, ConsumerServiceUrl, "10");
    }
4

0 回答 0