authentik.enterprise.providers.ssf.tests.test_jwks

JWKS tests

 1"""JWKS tests"""
 2
 3import base64
 4import json
 5
 6from cryptography.hazmat.backends import default_backend
 7from cryptography.x509 import load_der_x509_certificate
 8from django.test import TestCase
 9from django.urls.base import reverse
10from jwt import PyJWKSet
11
12from authentik.core.models import Application
13from authentik.core.tests.utils import create_test_cert
14from authentik.enterprise.providers.ssf.models import SSFProvider
15from authentik.lib.generators import generate_id
16
17
18class TestJWKS(TestCase):
19    """Test JWKS view"""
20
21    def test_rs256(self):
22        """Test JWKS request with RS256"""
23        provider = SSFProvider.objects.create(
24            name=generate_id(),
25            signing_key=create_test_cert(),
26        )
27        app = Application.objects.create(name=generate_id(), slug=generate_id())
28        app.backchannel_providers.add(provider)
29        response = self.client.get(
30            reverse("authentik_providers_ssf:jwks", kwargs={"application_slug": app.slug})
31        )
32        body = json.loads(response.content.decode())
33        self.assertEqual(len(body["keys"]), 1)
34        PyJWKSet.from_dict(body)
35        key = body["keys"][0]
36        load_der_x509_certificate(base64.b64decode(key["x5c"][0]), default_backend()).public_key()
37
38    def test_es256(self):
39        """Test JWKS request with ES256"""
40        provider = SSFProvider.objects.create(
41            name=generate_id(),
42            signing_key=create_test_cert(),
43        )
44        app = Application.objects.create(name=generate_id(), slug=generate_id())
45        app.backchannel_providers.add(provider)
46        response = self.client.get(
47            reverse("authentik_providers_ssf:jwks", kwargs={"application_slug": app.slug})
48        )
49        body = json.loads(response.content.decode())
50        self.assertEqual(len(body["keys"]), 1)
51        PyJWKSet.from_dict(body)
class TestJWKS(django.test.testcases.TestCase):
19class TestJWKS(TestCase):
20    """Test JWKS view"""
21
22    def test_rs256(self):
23        """Test JWKS request with RS256"""
24        provider = SSFProvider.objects.create(
25            name=generate_id(),
26            signing_key=create_test_cert(),
27        )
28        app = Application.objects.create(name=generate_id(), slug=generate_id())
29        app.backchannel_providers.add(provider)
30        response = self.client.get(
31            reverse("authentik_providers_ssf:jwks", kwargs={"application_slug": app.slug})
32        )
33        body = json.loads(response.content.decode())
34        self.assertEqual(len(body["keys"]), 1)
35        PyJWKSet.from_dict(body)
36        key = body["keys"][0]
37        load_der_x509_certificate(base64.b64decode(key["x5c"][0]), default_backend()).public_key()
38
39    def test_es256(self):
40        """Test JWKS request with ES256"""
41        provider = SSFProvider.objects.create(
42            name=generate_id(),
43            signing_key=create_test_cert(),
44        )
45        app = Application.objects.create(name=generate_id(), slug=generate_id())
46        app.backchannel_providers.add(provider)
47        response = self.client.get(
48            reverse("authentik_providers_ssf:jwks", kwargs={"application_slug": app.slug})
49        )
50        body = json.loads(response.content.decode())
51        self.assertEqual(len(body["keys"]), 1)
52        PyJWKSet.from_dict(body)

Test JWKS view

def test_rs256(self):
22    def test_rs256(self):
23        """Test JWKS request with RS256"""
24        provider = SSFProvider.objects.create(
25            name=generate_id(),
26            signing_key=create_test_cert(),
27        )
28        app = Application.objects.create(name=generate_id(), slug=generate_id())
29        app.backchannel_providers.add(provider)
30        response = self.client.get(
31            reverse("authentik_providers_ssf:jwks", kwargs={"application_slug": app.slug})
32        )
33        body = json.loads(response.content.decode())
34        self.assertEqual(len(body["keys"]), 1)
35        PyJWKSet.from_dict(body)
36        key = body["keys"][0]
37        load_der_x509_certificate(base64.b64decode(key["x5c"][0]), default_backend()).public_key()

Test JWKS request with RS256

def test_es256(self):
39    def test_es256(self):
40        """Test JWKS request with ES256"""
41        provider = SSFProvider.objects.create(
42            name=generate_id(),
43            signing_key=create_test_cert(),
44        )
45        app = Application.objects.create(name=generate_id(), slug=generate_id())
46        app.backchannel_providers.add(provider)
47        response = self.client.get(
48            reverse("authentik_providers_ssf:jwks", kwargs={"application_slug": app.slug})
49        )
50        body = json.loads(response.content.decode())
51        self.assertEqual(len(body["keys"]), 1)
52        PyJWKSet.from_dict(body)

Test JWKS request with ES256