Esempio n. 1
0
        public async Task <IActionResult> GetJsonWebKeySetAsync()
        {
            JwksDocument jwksDocument = new JwksDocument
            {
                Keys = new List <JwkDocument>()
            };

            List <X509Certificate2> certificates = await _certificateProvider.GetCertificates();

            foreach (X509Certificate2 cert in certificates)
            {
                string oidFriendlyName = cert.PublicKey.Oid.FriendlyName;

                RSA           rsaPublicKey     = cert.GetRSAPublicKey();
                RSAParameters exportParameters = rsaPublicKey.ExportParameters(false);
                string        exponent         = Convert.ToBase64String(exportParameters.Exponent);
                string        modulus          = Convert.ToBase64String(exportParameters.Modulus);

                List <string> chain = ExportChain(cert);

                JwkDocument jwkDocument = new JwkDocument
                {
                    KeyType = oidFriendlyName, PublicKeyUse = "sig", KeyId = cert.Thumbprint, Exponent = exponent, Modulus = modulus, X509Chain = chain
                };

                jwksDocument.Keys.Add(jwkDocument);
            }

            return(Ok(jwksDocument));
        }
Esempio n. 2
0
        public async Task <IActionResult> GetJsonWebKeySet()
        {
            X509Certificate2 cert = GetTokenCertificate();

            string oidFriendlyName = cert.PublicKey.Oid.FriendlyName;

            RSA           rsaPublicKey     = cert.GetRSAPublicKey();
            RSAParameters exportParameters = rsaPublicKey.ExportParameters(false);
            string        exponent         = Convert.ToBase64String(exportParameters.Exponent);
            string        modulus          = Convert.ToBase64String(exportParameters.Modulus);

            List <string> chain = ExportChain(cert);

            JwksDocument jwksDocument = new JwksDocument
            {
                Keys = new List <JwkDocument>
                {
                    new JwkDocument
                    {
                        KeyType = oidFriendlyName, PublicKeyUse = "sig", KeyId = cert.Thumbprint, Exponent = exponent, Modulus = modulus, X509Chain = chain
                    }
                }
            };

            return(await Task.FromResult(Ok(jwksDocument)));
        }
Esempio n. 3
0
        public async Task GetJsonWebKeySet()
        {
            // Arrange
            HttpClient client = GetTestClient();

            HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "/authentication/api/v1/openid/.well-known/openid-configuration/jwks");

            // Act
            HttpResponseMessage response = await client.SendAsync(requestMessage);

            // Assert
            string json = await response.Content.ReadAsStringAsync();

            JwksDocument jwksDocument = JsonSerializer.Deserialize <JwksDocument>(json);

            Assert.NotNull(jwksDocument);
            Assert.Single(jwksDocument.Keys);
            Assert.Equal("AQAB", jwksDocument.Keys[0].Exponent);
            Assert.Equal("RSA", jwksDocument.Keys[0].KeyType);
            Assert.Equal("sig", jwksDocument.Keys[0].PublicKeyUse);
        }