Skip to content

feat: SSO (Single Sign-On) support #7717

feat: SSO (Single Sign-On) support

feat: SSO (Single Sign-On) support #7717

GitHub Actions / Backend Tests succeeded Nov 22, 2024 in 0s

49 passed, 0 failed and 0 skipped

Tests passed successfully

Report Passed Failed Skipped Time
backend/security/build/test-results/test/TEST-io.tolgee.security.authentication.AuthenticationDisabledFilterTest.xml 3✅ 178ms
backend/security/build/test-results/test/TEST-io.tolgee.security.authentication.AuthenticationFilterTest.xml 10✅ 188ms
backend/security/build/test-results/test/TEST-io.tolgee.security.authentication.AuthenticationInterceptorTest.xml 4✅ 137ms
backend/security/build/test-results/test/TEST-io.tolgee.security.authorization.OrganizationAuthorizationInterceptorTest.xml 7✅ 183ms
backend/security/build/test-results/test/TEST-io.tolgee.security.authorization.ProjectAuthorizationInterceptorTest.xml 11✅ 272ms
backend/security/build/test-results/test/TEST-io.tolgee.security.ratelimit.GlobalIpRateLimitFilterTest.xml 3✅ 15ms
backend/security/build/test-results/test/TEST-io.tolgee.security.ratelimit.GlobalUserRateLimitFilterTest.xml 3✅ 12ms
backend/security/build/test-results/test/TEST-io.tolgee.security.ratelimit.RateLimitInterceptorTest.xml 8✅ 164ms

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.authentication.AuthenticationDisabledFilterTest.xml

3 tests were completed in 178ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.authentication.AuthenticationDisabledFilterTest 3✅ 178ms

✅ io.tolgee.security.authentication.AuthenticationDisabledFilterTest

✅ it does not filter when request is OPTIONS()
✅ it does not require authentication to go through()
✅ it does not authenticate when authentication is enabled()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.authentication.AuthenticationFilterTest.xml

10 tests were completed in 188ms with 10 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.authentication.AuthenticationFilterTest 10✅ 188ms

✅ io.tolgee.security.authentication.AuthenticationFilterTest

✅ it does not allow request to go through with invalid JWT tokens()
✅ it does not filter when request is OPTIONS()
✅ it applies a rate limit on authentication attempts()
✅ it allows request to go through when using invalid PAK()
✅ it allows request to go through when using invalid PAT()
✅ it allows request to go through with valid JWT token()
✅ it allows request to go through when using expired PAK()
✅ it allows request to go through when using expired PAT()
✅ it allows request to go through when using valid PAK()
✅ it allows request to go through when using valid PAT()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.authentication.AuthenticationInterceptorTest.xml

4 tests were completed in 137ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.authentication.AuthenticationInterceptorTest 4✅ 137ms

✅ io.tolgee.security.authentication.AuthenticationInterceptorTest

✅ it ignores super JWT requirement when authentication is disabled()
✅ it doesn't allow API key authentication by default()
✅ it enforces the super JWT requirement()
✅ it doesn't interfere with basic endpoints()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.authorization.OrganizationAuthorizationInterceptorTest.xml

7 tests were completed in 183ms with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.authorization.OrganizationAuthorizationInterceptorTest 7✅ 183ms

✅ io.tolgee.security.authorization.OrganizationAuthorizationInterceptorTest

✅ rejects access if the user does not have a sufficiently high role()
✅ it hides the organization if the user cannot see it()
✅ not throw when annotated by email verification bypass()
✅ rejects access if the user does not have a verified email()
✅ it has no effect on endpoints not specific to a single organization()
✅ it requires an annotation to be present on the handler()
✅ it does not allow both annotations to be present()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.authorization.ProjectAuthorizationInterceptorTest.xml

11 tests were completed in 272ms with 11 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.authorization.ProjectAuthorizationInterceptorTest 11✅ 272ms

✅ io.tolgee.security.authorization.ProjectAuthorizationInterceptorTest

✅ it hides the organization if the user cannot see it()
✅ permissions work as intended when using implicit project id()
✅ it does not let scopes on the key work if the authenticated user does not have them()
✅ it has no effect on endpoints not specific to a single project()
✅ ensures API key works only for the project it is bound to()
✅ rejects access if the user is admin and authorizes with API key()
✅ rejects access if the user does not have the required scope (single scope)()
✅ it restricts scopes (multiple scopes)()
✅ it requires an annotation to be present on the handler()
✅ it does not allow both annotations to be present()
✅ rejects access if the user does not have the required scope (multiple scopes)()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.ratelimit.GlobalIpRateLimitFilterTest.xml

3 tests were completed in 15ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.ratelimit.GlobalIpRateLimitFilterTest 3✅ 15ms

✅ io.tolgee.security.ratelimit.GlobalIpRateLimitFilterTest

✅ it lets requests through()
✅ it does not let rate limited requests through()
✅ it does rate limit if request is OPTIONS()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.ratelimit.GlobalUserRateLimitFilterTest.xml

3 tests were completed in 12ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.ratelimit.GlobalUserRateLimitFilterTest 3✅ 12ms

✅ io.tolgee.security.ratelimit.GlobalUserRateLimitFilterTest

✅ it lets requests through()
✅ it does not let rate limited requests through()
✅ it does rate limit if request is OPTIONS()

✅ backend/security/build/test-results/test/TEST-io.tolgee.security.ratelimit.RateLimitInterceptorTest.xml

8 tests were completed in 164ms with 8 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
io.tolgee.security.ratelimit.RateLimitInterceptorTest 8✅ 164ms

✅ io.tolgee.security.ratelimit.RateLimitInterceptorTest

✅ it rate limits requests according to the specified policy()
✅ endpoint rate limit policy is correctly extracted from annotations()
✅ endpoint rate limit bucket correctly discriminates against major path variables()
✅ endpoint rate limit uses the correct user or ip discrimination method()
✅ it uses different buckets for different paths()
✅ it does not rate limit when limits are disabled()
✅ it does not rate limit when there are no annotations()
✅ it uses the same buckets for paths with a shared bucket()