providers/oauth2: Set CORS Headers for token endpoint, check Origin header against redirect URLs
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -3,6 +3,7 @@ import re | |||||||
| from base64 import b64decode | from base64 import b64decode | ||||||
| from binascii import Error | from binascii import Error | ||||||
| from typing import Optional | from typing import Optional | ||||||
|  | from urllib.parse import urlparse | ||||||
|  |  | ||||||
| from django.http import HttpRequest, HttpResponse, JsonResponse | from django.http import HttpRequest, HttpResponse, JsonResponse | ||||||
| from django.utils.cache import patch_vary_headers | from django.utils.cache import patch_vary_headers | ||||||
| @ -25,15 +26,34 @@ class TokenResponse(JsonResponse): | |||||||
|         self["Pragma"] = "no-cache" |         self["Pragma"] = "no-cache" | ||||||
|  |  | ||||||
|  |  | ||||||
| def cors_allow_any(request, response): | def cors_allow_any(request: HttpRequest, response: HttpResponse, *allowed_origins: str): | ||||||
|     """ |     """Add headers to permit CORS requests from any origin, with or without credentials, | ||||||
|     Add headers to permit CORS requests from any origin, with or without credentials, |     with any headers.""" | ||||||
|     with any headers. |  | ||||||
|     """ |  | ||||||
|     origin = request.META.get("HTTP_ORIGIN") |     origin = request.META.get("HTTP_ORIGIN") | ||||||
|     if not origin: |     if not origin: | ||||||
|         return response |         return response | ||||||
|  |  | ||||||
|  |     # OPTIONS requests don't have an authorization header -> hence | ||||||
|  |     # we can't extract the provider this request is for | ||||||
|  |     # so for options requests we allow the calling origin without checking | ||||||
|  |     allowed = request.method == "OPTIONS" | ||||||
|  |     received_origin = urlparse(origin) | ||||||
|  |     for allowed_origin in allowed_origins: | ||||||
|  |         url = urlparse(allowed_origin) | ||||||
|  |         if ( | ||||||
|  |             received_origin.scheme == url.scheme | ||||||
|  |             and received_origin.hostname == url.hostname | ||||||
|  |             and received_origin.port == url.port | ||||||
|  |         ): | ||||||
|  |             allowed = True | ||||||
|  |     if not allowed: | ||||||
|  |         LOGGER.warning( | ||||||
|  |             "CORS: Origin is not an allowed origin", | ||||||
|  |             requested=origin, | ||||||
|  |             allowed=allowed_origins, | ||||||
|  |         ) | ||||||
|  |         return response | ||||||
|  |  | ||||||
|     # From the CORS spec: The string "*" cannot be used for a resource that supports credentials. |     # From the CORS spec: The string "*" cannot be used for a resource that supports credentials. | ||||||
|     response["Access-Control-Allow-Origin"] = origin |     response["Access-Control-Allow-Origin"] = origin | ||||||
|     patch_vary_headers(response, ["Origin"]) |     patch_vary_headers(response, ["Origin"]) | ||||||
|  | |||||||
| @ -30,6 +30,8 @@ PLAN_CONTEXT_SCOPES = "scopes" | |||||||
| class ProviderInfoView(View): | class ProviderInfoView(View): | ||||||
|     """OpenID-compliant Provider Info""" |     """OpenID-compliant Provider Info""" | ||||||
|  |  | ||||||
|  |     provider: OAuth2Provider | ||||||
|  |  | ||||||
|     def get_info(self, provider: OAuth2Provider) -> dict[str, Any]: |     def get_info(self, provider: OAuth2Provider) -> dict[str, Any]: | ||||||
|         """Get dictionary for OpenID Connect information""" |         """Get dictionary for OpenID Connect information""" | ||||||
|         scopes = list( |         scopes = list( | ||||||
| @ -95,19 +97,20 @@ class ProviderInfoView(View): | |||||||
|         } |         } | ||||||
|  |  | ||||||
|     # pylint: disable=unused-argument |     # pylint: disable=unused-argument | ||||||
|     def get( |     def get(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: | ||||||
|         self, request: HttpRequest, application_slug: str, *args, **kwargs |  | ||||||
|     ) -> HttpResponse: |  | ||||||
|         """OpenID-compliant Provider Info""" |         """OpenID-compliant Provider Info""" | ||||||
|  |         return JsonResponse( | ||||||
|  |             self.get_info(self.provider), json_dumps_params={"indent": 2} | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |     def dispatch( | ||||||
|  |         self, request: HttpRequest, application_slug: str, *args: Any, **kwargs: Any | ||||||
|  |     ) -> HttpResponse: | ||||||
|  |         # Since this view only supports get, we can statically set the CORS headers | ||||||
|         application = get_object_or_404(Application, slug=application_slug) |         application = get_object_or_404(Application, slug=application_slug) | ||||||
|         provider: OAuth2Provider = get_object_or_404( |         self.provider: OAuth2Provider = get_object_or_404( | ||||||
|             OAuth2Provider, pk=application.provider_id |             OAuth2Provider, pk=application.provider_id | ||||||
|         ) |         ) | ||||||
|         return JsonResponse(self.get_info(provider), json_dumps_params={"indent": 2}) |  | ||||||
|  |  | ||||||
|     def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: |  | ||||||
|         # Since this view only supports get, we can statically set the CORS headers |  | ||||||
|         response = super().dispatch(request, *args, **kwargs) |         response = super().dispatch(request, *args, **kwargs) | ||||||
|         cors_allow_any(request, response) |         cors_allow_any(request, response, *self.provider.redirect_uris.split("\n")) | ||||||
|         return response |         return response | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| """authentik OAuth2 OpenID Userinfo views""" | """authentik OAuth2 OpenID Userinfo views""" | ||||||
| from typing import Any | from typing import Any, Optional | ||||||
|  |  | ||||||
| from django.http import HttpRequest, HttpResponse | from django.http import HttpRequest, HttpResponse | ||||||
|  | from django.http.response import HttpResponseBadRequest | ||||||
| from django.utils.translation import gettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| from django.views import View | from django.views import View | ||||||
| from structlog.stdlib import get_logger | from structlog.stdlib import get_logger | ||||||
| @ -22,6 +23,8 @@ class UserInfoView(View): | |||||||
|     """Create a dictionary with all the requested claims about the End-User. |     """Create a dictionary with all the requested claims about the End-User. | ||||||
|     See: http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse""" |     See: http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse""" | ||||||
|  |  | ||||||
|  |     token: Optional[RefreshToken] | ||||||
|  |  | ||||||
|     def get_scope_descriptions(self, scopes: list[str]) -> list[dict[str, str]]: |     def get_scope_descriptions(self, scopes: list[str]) -> list[dict[str, str]]: | ||||||
|         """Get a list of all Scopes's descriptions""" |         """Get a list of all Scopes's descriptions""" | ||||||
|         scope_descriptions = [] |         scope_descriptions = [] | ||||||
| @ -79,16 +82,25 @@ class UserInfoView(View): | |||||||
|             final_claims.update(value) |             final_claims.update(value) | ||||||
|         return final_claims |         return final_claims | ||||||
|  |  | ||||||
|  |     def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: | ||||||
|  |         self.token = kwargs.get("token", None) | ||||||
|  |         response = super().dispatch(request, *args, **kwargs) | ||||||
|  |         allowed_origins = [] | ||||||
|  |         if self.token: | ||||||
|  |             allowed_origins = self.token.provider.redirect_uris.split("\n") | ||||||
|  |         cors_allow_any(self.request, response, *allowed_origins) | ||||||
|  |         return response | ||||||
|  |  | ||||||
|     def options(self, request: HttpRequest) -> HttpResponse: |     def options(self, request: HttpRequest) -> HttpResponse: | ||||||
|         return cors_allow_any(self.request, TokenResponse({})) |         return TokenResponse({}) | ||||||
|  |  | ||||||
|     def get(self, request: HttpRequest, **kwargs) -> HttpResponse: |     def get(self, request: HttpRequest, **kwargs) -> HttpResponse: | ||||||
|         """Handle GET Requests for UserInfo""" |         """Handle GET Requests for UserInfo""" | ||||||
|         token: RefreshToken = kwargs["token"] |         if not self.token: | ||||||
|         claims = self.get_claims(token) |             return HttpResponseBadRequest() | ||||||
|         claims["sub"] = token.id_token.sub |         claims = self.get_claims(self.token) | ||||||
|  |         claims["sub"] = self.token.id_token.sub | ||||||
|         response = TokenResponse(claims) |         response = TokenResponse(claims) | ||||||
|         cors_allow_any(self.request, response) |  | ||||||
|         return response |         return response | ||||||
|  |  | ||||||
|     def post(self, request: HttpRequest, **kwargs) -> HttpResponse: |     def post(self, request: HttpRequest, **kwargs) -> HttpResponse: | ||||||
|  | |||||||
| @ -21,7 +21,7 @@ class ProxyScopeMappingManager(ObjectManager): | |||||||
|             EnsureExists( |             EnsureExists( | ||||||
|                 ScopeMapping, |                 ScopeMapping, | ||||||
|                 "goauthentik.io/providers/proxy/scope-proxy", |                 "goauthentik.io/providers/proxy/scope-proxy", | ||||||
|                 name="authentik default OAuth Mapping: proxy outpost", |                 name="authentik default OAuth Mapping: Proxy outpost", | ||||||
|                 scope_name=SCOPE_AK_PROXY, |                 scope_name=SCOPE_AK_PROXY, | ||||||
|                 expression=SCOPE_AK_PROXY_EXPRESSION, |                 expression=SCOPE_AK_PROXY_EXPRESSION, | ||||||
|             ), |             ), | ||||||
|  | |||||||
| @ -105,7 +105,7 @@ msgstr "Additional group DN, prepended to the Base DN." | |||||||
| msgid "Additional user DN, prepended to the Base DN." | msgid "Additional user DN, prepended to the Base DN." | ||||||
| msgstr "Additional user DN, prepended to the Base DN." | msgstr "Additional user DN, prepended to the Base DN." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:128 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:131 | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:128 | #: src/pages/providers/proxy/ProxyProviderForm.ts:128 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:117 | #: src/pages/providers/saml/SAMLProviderForm.ts:117 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:134 | #: src/pages/sources/saml/SAMLSourceForm.ts:134 | ||||||
| @ -125,7 +125,7 @@ msgstr "Affected model:" | |||||||
| msgid "Alert" | msgid "Alert" | ||||||
| msgstr "Alert" | msgstr "Alert" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:149 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:152 | ||||||
| msgid "Algorithm used to sign the JWT Tokens." | msgid "Algorithm used to sign the JWT Tokens." | ||||||
| msgstr "Algorithm used to sign the JWT Tokens." | msgstr "Algorithm used to sign the JWT Tokens." | ||||||
|  |  | ||||||
| @ -220,19 +220,19 @@ msgstr "Are you sure you want to delete {0} {objName} ?" | |||||||
| msgid "Are you sure you want to update {0} \"{1}\"?" | msgid "Are you sure you want to update {0} \"{1}\"?" | ||||||
| msgstr "Are you sure you want to update {0} \"{1}\"?" | msgstr "Are you sure you want to update {0} \"{1}\"?" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:202 | #: src/pages/providers/saml/SAMLProviderForm.ts:208 | ||||||
| msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | ||||||
| msgstr "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | msgstr "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:191 | #: src/pages/providers/saml/SAMLProviderForm.ts:197 | ||||||
| msgid "Assertion valid not before" | msgid "Assertion valid not before" | ||||||
| msgstr "Assertion valid not before" | msgstr "Assertion valid not before" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:195 | #: src/pages/providers/saml/SAMLProviderForm.ts:201 | ||||||
| msgid "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)." | msgid "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)." | ||||||
| msgstr "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)." | msgstr "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)." | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:198 | #: src/pages/providers/saml/SAMLProviderForm.ts:204 | ||||||
| msgid "Assertion valid not on or after" | msgid "Assertion valid not on or after" | ||||||
| msgstr "Assertion valid not on or after" | msgstr "Assertion valid not on or after" | ||||||
|  |  | ||||||
| @ -342,19 +342,19 @@ msgstr "Backup status" | |||||||
| msgid "Base DN" | msgid "Base DN" | ||||||
| msgstr "Base DN" | msgstr "Base DN" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:195 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:204 | ||||||
| msgid "Based on the Hashed User ID" | msgid "Based on the Hashed User ID" | ||||||
| msgstr "Based on the Hashed User ID" | msgstr "Based on the Hashed User ID" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:201 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:210 | ||||||
| msgid "Based on the User's Email. This is recommended over the UPN method." | msgid "Based on the User's Email. This is recommended over the UPN method." | ||||||
| msgstr "Based on the User's Email. This is recommended over the UPN method." | msgstr "Based on the User's Email. This is recommended over the UPN method." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:204 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:213 | ||||||
| msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains." | msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains." | ||||||
| msgstr "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains." | msgstr "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:198 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:207 | ||||||
| msgid "Based on the username" | msgid "Based on the username" | ||||||
| msgstr "Based on the username" | msgstr "Based on the username" | ||||||
|  |  | ||||||
| @ -592,11 +592,11 @@ msgstr "Configuration flow" | |||||||
| msgid "Configure WebAuthn" | msgid "Configure WebAuthn" | ||||||
| msgstr "Configure WebAuthn" | msgstr "Configure WebAuthn" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:187 | #: src/pages/providers/saml/SAMLProviderForm.ts:193 | ||||||
| msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected." | msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected." | ||||||
| msgstr "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected." | msgstr "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:233 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:242 | ||||||
| msgid "Configure how the issuer field of the ID Token should be filled." | msgid "Configure how the issuer field of the ID Token should be filled." | ||||||
| msgstr "Configure how the issuer field of the ID Token should be filled." | msgstr "Configure how the issuer field of the ID Token should be filled." | ||||||
|  |  | ||||||
| @ -604,7 +604,7 @@ msgstr "Configure how the issuer field of the ID Token should be filled." | |||||||
| msgid "Configure settings relevant to your user profile." | msgid "Configure settings relevant to your user profile." | ||||||
| msgstr "Configure settings relevant to your user profile." | msgstr "Configure settings relevant to your user profile." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:208 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:217 | ||||||
| msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine." | msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine." | ||||||
| msgstr "Configure what data should be used as unique User Identifier. For most cases, the default should be fine." | msgstr "Configure what data should be used as unique User Identifier. For most cases, the default should be fine." | ||||||
|  |  | ||||||
| @ -846,7 +846,7 @@ msgstr "Creation Date" | |||||||
| msgid "Customisation" | msgid "Customisation" | ||||||
| msgstr "Customisation" | msgstr "Customisation" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:249 | #: src/pages/providers/saml/SAMLProviderForm.ts:255 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:212 | #: src/pages/sources/saml/SAMLSourceForm.ts:212 | ||||||
| msgid "DSA-SHA1" | msgid "DSA-SHA1" | ||||||
| msgstr "DSA-SHA1" | msgstr "DSA-SHA1" | ||||||
| @ -967,7 +967,7 @@ msgstr "Device classes which can be used to authenticate." | |||||||
| msgid "Device name" | msgid "Device name" | ||||||
| msgstr "Device name" | msgstr "Device name" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:213 | #: src/pages/providers/saml/SAMLProviderForm.ts:219 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:176 | #: src/pages/sources/saml/SAMLSourceForm.ts:176 | ||||||
| msgid "Digest algorithm" | msgid "Digest algorithm" | ||||||
| msgstr "Digest algorithm" | msgstr "Digest algorithm" | ||||||
| @ -1010,7 +1010,7 @@ msgstr "Download" | |||||||
| msgid "Dummy stage used for testing. Shows a simple continue button and always passes." | msgid "Dummy stage used for testing. Shows a simple continue button and always passes." | ||||||
| msgstr "Dummy stage used for testing. Shows a simple continue button and always passes." | msgstr "Dummy stage used for testing. Shows a simple continue button and always passes." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:226 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:235 | ||||||
| msgid "Each provider has a different issuer, based on the application slug." | msgid "Each provider has a different issuer, based on the application slug." | ||||||
| msgstr "Each provider has a different issuer, based on the application slug." | msgstr "Each provider has a different issuer, based on the application slug." | ||||||
|  |  | ||||||
| @ -1451,7 +1451,7 @@ msgstr "Group {0}" | |||||||
| msgid "Groups" | msgid "Groups" | ||||||
| msgstr "Groups" | msgstr "Groups" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:146 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:149 | ||||||
| msgid "HS256 (Symmetric Encryption)" | msgid "HS256 (Symmetric Encryption)" | ||||||
| msgstr "HS256 (Symmetric Encryption)" | msgstr "HS256 (Symmetric Encryption)" | ||||||
|  |  | ||||||
| @ -1478,8 +1478,8 @@ msgstr "Hide managed mappings" | |||||||
| #: src/pages/events/RuleForm.ts:93 | #: src/pages/events/RuleForm.ts:93 | ||||||
| #: src/pages/groups/GroupForm.ts:132 | #: src/pages/groups/GroupForm.ts:132 | ||||||
| #: src/pages/outposts/OutpostForm.ts:98 | #: src/pages/outposts/OutpostForm.ts:98 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:169 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:178 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:171 | #: src/pages/providers/saml/SAMLProviderForm.ts:177 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:167 | #: src/pages/sources/ldap/LDAPSourceForm.ts:167 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:193 | #: src/pages/sources/ldap/LDAPSourceForm.ts:193 | ||||||
| #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:114 | #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:114 | ||||||
| @ -1552,11 +1552,11 @@ msgstr "Import certificates of external providers or create certificates to sign | |||||||
| msgid "In case you can't access any other method." | msgid "In case you can't access any other method." | ||||||
| msgstr "In case you can't access any other method." | msgstr "In case you can't access any other method." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:218 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:227 | ||||||
| msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint." | msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint." | ||||||
| msgstr "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint." | msgstr "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint." | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:215 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:224 | ||||||
| msgid "Include claims in id_token" | msgid "Include claims in id_token" | ||||||
| msgstr "Include claims in id_token" | msgstr "Include claims in id_token" | ||||||
|  |  | ||||||
| @ -1600,15 +1600,15 @@ msgstr "Is superuser" | |||||||
| msgid "Issuer" | msgid "Issuer" | ||||||
| msgstr "Issuer" | msgstr "Issuer" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:221 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:230 | ||||||
| msgid "Issuer mode" | msgid "Issuer mode" | ||||||
| msgstr "Issuer mode" | msgstr "Issuer mode" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:138 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:141 | ||||||
| msgid "JWT Algorithm" | msgid "JWT Algorithm" | ||||||
| msgstr "JWT Algorithm" | msgstr "JWT Algorithm" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:187 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:196 | ||||||
| msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256." | msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256." | ||||||
| msgstr "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256." | msgstr "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256." | ||||||
|  |  | ||||||
| @ -1706,15 +1706,15 @@ msgstr "Loading" | |||||||
| #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108 | #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108 | ||||||
| #: src/pages/property-mappings/PropertyMappingTestForm.ts:59 | #: src/pages/property-mappings/PropertyMappingTestForm.ts:59 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:166 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:175 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:185 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:194 | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:92 | #: src/pages/providers/proxy/ProxyProviderForm.ts:92 | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:143 | #: src/pages/providers/proxy/ProxyProviderForm.ts:143 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:71 | #: src/pages/providers/saml/SAMLProviderForm.ts:71 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:133 | #: src/pages/providers/saml/SAMLProviderForm.ts:133 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:149 | #: src/pages/providers/saml/SAMLProviderForm.ts:149 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:169 | #: src/pages/providers/saml/SAMLProviderForm.ts:175 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:185 | #: src/pages/providers/saml/SAMLProviderForm.ts:191 | ||||||
| #: src/pages/providers/saml/SAMLProviderImportForm.ts:55 | #: src/pages/providers/saml/SAMLProviderImportForm.ts:55 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:164 | #: src/pages/sources/ldap/LDAPSourceForm.ts:164 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:190 | #: src/pages/sources/ldap/LDAPSourceForm.ts:190 | ||||||
| @ -1924,7 +1924,7 @@ msgstr "Name of the form field, also used to store the value." | |||||||
| msgid "NameID Policy" | msgid "NameID Policy" | ||||||
| msgstr "NameID Policy" | msgstr "NameID Policy" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:174 | #: src/pages/providers/saml/SAMLProviderForm.ts:180 | ||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "NameID Property Mapping" | msgstr "NameID Property Mapping" | ||||||
|  |  | ||||||
| @ -2434,30 +2434,30 @@ msgstr "Public key, acquired from https://www.google.com/recaptcha/intro/v3.html | |||||||
| msgid "Publisher" | msgid "Publisher" | ||||||
| msgstr "Publisher" | msgstr "Publisher" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:143 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:146 | ||||||
| msgid "RS256 (Asymmetric Encryption)" | msgid "RS256 (Asymmetric Encryption)" | ||||||
| msgstr "RS256 (Asymmetric Encryption)" | msgstr "RS256 (Asymmetric Encryption)" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:172 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:181 | ||||||
| msgid "RSA Key" | msgid "RSA Key" | ||||||
| msgstr "RSA Key" | msgstr "RSA Key" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:237 | #: src/pages/providers/saml/SAMLProviderForm.ts:243 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:200 | #: src/pages/sources/saml/SAMLSourceForm.ts:200 | ||||||
| msgid "RSA-SHA1" | msgid "RSA-SHA1" | ||||||
| msgstr "RSA-SHA1" | msgstr "RSA-SHA1" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:240 | #: src/pages/providers/saml/SAMLProviderForm.ts:246 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:203 | #: src/pages/sources/saml/SAMLSourceForm.ts:203 | ||||||
| msgid "RSA-SHA256" | msgid "RSA-SHA256" | ||||||
| msgstr "RSA-SHA256" | msgstr "RSA-SHA256" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:243 | #: src/pages/providers/saml/SAMLProviderForm.ts:249 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:206 | #: src/pages/sources/saml/SAMLSourceForm.ts:206 | ||||||
| msgid "RSA-SHA384" | msgid "RSA-SHA384" | ||||||
| msgstr "RSA-SHA384" | msgstr "RSA-SHA384" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:246 | #: src/pages/providers/saml/SAMLProviderForm.ts:252 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:209 | #: src/pages/sources/saml/SAMLSourceForm.ts:209 | ||||||
| msgid "RSA-SHA512" | msgid "RSA-SHA512" | ||||||
| msgstr "RSA-SHA512" | msgstr "RSA-SHA512" | ||||||
| @ -2482,11 +2482,14 @@ msgstr "Recovery keys" | |||||||
| msgid "Redirect" | msgid "Redirect" | ||||||
| msgstr "Redirect" | msgstr "Redirect" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:119 |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:107 | #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:107 | ||||||
| msgid "Redirect URIs" | msgid "Redirect URIs" | ||||||
| msgstr "Redirect URIs" | msgstr "Redirect URIs" | ||||||
|  |  | ||||||
|  | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:119 | ||||||
|  | msgid "Redirect URIs/Origins" | ||||||
|  | msgstr "Redirect URIs/Origins" | ||||||
|  |  | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:104 | #: src/pages/sources/saml/SAMLSourceForm.ts:104 | ||||||
| msgid "Redirect binding" | msgid "Redirect binding" | ||||||
| msgstr "Redirect binding" | msgstr "Redirect binding" | ||||||
| @ -2582,22 +2585,22 @@ msgstr "Return to device picker" | |||||||
| msgid "SAML Attribute Name" | msgid "SAML Attribute Name" | ||||||
| msgstr "SAML Attribute Name" | msgstr "SAML Attribute Name" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:218 | #: src/pages/providers/saml/SAMLProviderForm.ts:224 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:181 | #: src/pages/sources/saml/SAMLSourceForm.ts:181 | ||||||
| msgid "SHA1" | msgid "SHA1" | ||||||
| msgstr "SHA1" | msgstr "SHA1" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:221 | #: src/pages/providers/saml/SAMLProviderForm.ts:227 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:184 | #: src/pages/sources/saml/SAMLSourceForm.ts:184 | ||||||
| msgid "SHA256" | msgid "SHA256" | ||||||
| msgstr "SHA256" | msgstr "SHA256" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:224 | #: src/pages/providers/saml/SAMLProviderForm.ts:230 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:187 | #: src/pages/sources/saml/SAMLSourceForm.ts:187 | ||||||
| msgid "SHA384" | msgid "SHA384" | ||||||
| msgstr "SHA384" | msgstr "SHA384" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:227 | #: src/pages/providers/saml/SAMLProviderForm.ts:233 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:190 | #: src/pages/sources/saml/SAMLSourceForm.ts:190 | ||||||
| msgid "SHA512" | msgid "SHA512" | ||||||
| msgstr "SHA512" | msgstr "SHA512" | ||||||
| @ -2628,7 +2631,7 @@ msgstr "SMTP Username" | |||||||
| msgid "SSO URL" | msgid "SSO URL" | ||||||
| msgstr "SSO URL" | msgstr "SSO URL" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:229 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:238 | ||||||
| msgid "Same identifier is used for all providers" | msgid "Same identifier is used for all providers" | ||||||
| msgstr "Same identifier is used for all providers" | msgstr "Same identifier is used for all providers" | ||||||
|  |  | ||||||
| @ -2642,7 +2645,7 @@ msgstr "Scope which the client can specify to access these properties." | |||||||
|  |  | ||||||
| #: src/elements/oauth/UserCodeList.ts:31 | #: src/elements/oauth/UserCodeList.ts:31 | ||||||
| #: src/elements/oauth/UserRefreshList.ts:31 | #: src/elements/oauth/UserRefreshList.ts:31 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:152 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:155 | ||||||
| msgid "Scopes" | msgid "Scopes" | ||||||
| msgstr "Scopes" | msgstr "Scopes" | ||||||
|  |  | ||||||
| @ -2677,7 +2680,7 @@ msgstr "Select an identification method." | |||||||
| msgid "Select users to add" | msgid "Select users to add" | ||||||
| msgstr "Select users to add" | msgstr "Select users to add" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:168 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:177 | ||||||
| msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data." | msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data." | ||||||
| msgstr "Select which scopes can be used by the client. The client stil has to specify the scope to access the data." | msgstr "Select which scopes can be used by the client. The client stil has to specify the scope to access the data." | ||||||
|  |  | ||||||
| @ -2738,11 +2741,11 @@ msgstr "Service connection" | |||||||
| msgid "Session duration" | msgid "Session duration" | ||||||
| msgstr "Session duration" | msgstr "Session duration" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:209 | #: src/pages/providers/saml/SAMLProviderForm.ts:215 | ||||||
| msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | ||||||
| msgstr "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | msgstr "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:205 | #: src/pages/providers/saml/SAMLProviderForm.ts:211 | ||||||
| msgid "Session valid not on or after" | msgid "Session valid not on or after" | ||||||
| msgstr "Session valid not on or after" | msgstr "Session valid not on or after" | ||||||
|  |  | ||||||
| @ -2783,7 +2786,7 @@ msgstr "Shown as the Title in Flow pages." | |||||||
| msgid "Sign up." | msgid "Sign up." | ||||||
| msgstr "Sign up." | msgstr "Sign up." | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:232 | #: src/pages/providers/saml/SAMLProviderForm.ts:238 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:195 | #: src/pages/sources/saml/SAMLSourceForm.ts:195 | ||||||
| msgid "Signature algorithm" | msgid "Signature algorithm" | ||||||
| msgstr "Signature algorithm" | msgstr "Signature algorithm" | ||||||
| @ -2938,7 +2941,7 @@ msgstr "Stop impersonation" | |||||||
| msgid "Subject" | msgid "Subject" | ||||||
| msgstr "Subject" | msgstr "Subject" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:190 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:199 | ||||||
| msgid "Subject mode" | msgid "Subject mode" | ||||||
| msgstr "Subject mode" | msgstr "Subject mode" | ||||||
|  |  | ||||||
| @ -3378,7 +3381,7 @@ msgstr "Token count" | |||||||
| msgid "Token expiry" | msgid "Token expiry" | ||||||
| msgstr "Token expiry" | msgstr "Token expiry" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:132 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:135 | ||||||
| msgid "Token validity" | msgid "Token validity" | ||||||
| msgstr "Token validity" | msgstr "Token validity" | ||||||
|  |  | ||||||
| @ -3718,6 +3721,10 @@ msgstr "Using flow" | |||||||
| msgid "Using source" | msgid "Using source" | ||||||
| msgstr "Using source" | msgstr "Using source" | ||||||
|  |  | ||||||
|  | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:123 | ||||||
|  | msgid "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows." | ||||||
|  | msgstr "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows." | ||||||
|  |  | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:115 | #: src/pages/providers/proxy/ProxyProviderForm.ts:115 | ||||||
| msgid "Validate SSL Certificates of upstream servers." | msgid "Validate SSL Certificates of upstream servers." | ||||||
| msgstr "Validate SSL Certificates of upstream servers." | msgstr "Validate SSL Certificates of upstream servers." | ||||||
|  | |||||||
| @ -105,7 +105,7 @@ msgstr "" | |||||||
| msgid "Additional user DN, prepended to the Base DN." | msgid "Additional user DN, prepended to the Base DN." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:128 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:131 | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:128 | #: src/pages/providers/proxy/ProxyProviderForm.ts:128 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:117 | #: src/pages/providers/saml/SAMLProviderForm.ts:117 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:134 | #: src/pages/sources/saml/SAMLSourceForm.ts:134 | ||||||
| @ -125,7 +125,7 @@ msgstr "" | |||||||
| msgid "Alert" | msgid "Alert" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:149 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:152 | ||||||
| msgid "Algorithm used to sign the JWT Tokens." | msgid "Algorithm used to sign the JWT Tokens." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -216,19 +216,19 @@ msgstr "" | |||||||
| msgid "Are you sure you want to update {0} \"{1}\"?" | msgid "Are you sure you want to update {0} \"{1}\"?" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:202 | #: src/pages/providers/saml/SAMLProviderForm.ts:208 | ||||||
| msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:191 | #: src/pages/providers/saml/SAMLProviderForm.ts:197 | ||||||
| msgid "Assertion valid not before" | msgid "Assertion valid not before" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:195 | #: src/pages/providers/saml/SAMLProviderForm.ts:201 | ||||||
| msgid "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)." | msgid "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:198 | #: src/pages/providers/saml/SAMLProviderForm.ts:204 | ||||||
| msgid "Assertion valid not on or after" | msgid "Assertion valid not on or after" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -338,19 +338,19 @@ msgstr "" | |||||||
| msgid "Base DN" | msgid "Base DN" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:195 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:204 | ||||||
| msgid "Based on the Hashed User ID" | msgid "Based on the Hashed User ID" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:201 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:210 | ||||||
| msgid "Based on the User's Email. This is recommended over the UPN method." | msgid "Based on the User's Email. This is recommended over the UPN method." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:204 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:213 | ||||||
| msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains." | msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:198 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:207 | ||||||
| msgid "Based on the username" | msgid "Based on the username" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -586,11 +586,11 @@ msgstr "" | |||||||
| msgid "Configure WebAuthn" | msgid "Configure WebAuthn" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:187 | #: src/pages/providers/saml/SAMLProviderForm.ts:193 | ||||||
| msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected." | msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:233 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:242 | ||||||
| msgid "Configure how the issuer field of the ID Token should be filled." | msgid "Configure how the issuer field of the ID Token should be filled." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -598,7 +598,7 @@ msgstr "" | |||||||
| msgid "Configure settings relevant to your user profile." | msgid "Configure settings relevant to your user profile." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:208 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:217 | ||||||
| msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine." | msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -840,7 +840,7 @@ msgstr "" | |||||||
| msgid "Customisation" | msgid "Customisation" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:249 | #: src/pages/providers/saml/SAMLProviderForm.ts:255 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:212 | #: src/pages/sources/saml/SAMLSourceForm.ts:212 | ||||||
| msgid "DSA-SHA1" | msgid "DSA-SHA1" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -959,7 +959,7 @@ msgstr "" | |||||||
| msgid "Device name" | msgid "Device name" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:213 | #: src/pages/providers/saml/SAMLProviderForm.ts:219 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:176 | #: src/pages/sources/saml/SAMLSourceForm.ts:176 | ||||||
| msgid "Digest algorithm" | msgid "Digest algorithm" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -1002,7 +1002,7 @@ msgstr "" | |||||||
| msgid "Dummy stage used for testing. Shows a simple continue button and always passes." | msgid "Dummy stage used for testing. Shows a simple continue button and always passes." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:226 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:235 | ||||||
| msgid "Each provider has a different issuer, based on the application slug." | msgid "Each provider has a different issuer, based on the application slug." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -1443,7 +1443,7 @@ msgstr "" | |||||||
| msgid "Groups" | msgid "Groups" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:146 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:149 | ||||||
| msgid "HS256 (Symmetric Encryption)" | msgid "HS256 (Symmetric Encryption)" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -1470,8 +1470,8 @@ msgstr "" | |||||||
| #: src/pages/events/RuleForm.ts:93 | #: src/pages/events/RuleForm.ts:93 | ||||||
| #: src/pages/groups/GroupForm.ts:132 | #: src/pages/groups/GroupForm.ts:132 | ||||||
| #: src/pages/outposts/OutpostForm.ts:98 | #: src/pages/outposts/OutpostForm.ts:98 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:169 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:178 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:171 | #: src/pages/providers/saml/SAMLProviderForm.ts:177 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:167 | #: src/pages/sources/ldap/LDAPSourceForm.ts:167 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:193 | #: src/pages/sources/ldap/LDAPSourceForm.ts:193 | ||||||
| #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:114 | #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:114 | ||||||
| @ -1544,11 +1544,11 @@ msgstr "" | |||||||
| msgid "In case you can't access any other method." | msgid "In case you can't access any other method." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:218 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:227 | ||||||
| msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint." | msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:215 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:224 | ||||||
| msgid "Include claims in id_token" | msgid "Include claims in id_token" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -1592,15 +1592,15 @@ msgstr "" | |||||||
| msgid "Issuer" | msgid "Issuer" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:221 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:230 | ||||||
| msgid "Issuer mode" | msgid "Issuer mode" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:138 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:141 | ||||||
| msgid "JWT Algorithm" | msgid "JWT Algorithm" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:187 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:196 | ||||||
| msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256." | msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -1698,15 +1698,15 @@ msgstr "" | |||||||
| #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108 | #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108 | ||||||
| #: src/pages/property-mappings/PropertyMappingTestForm.ts:59 | #: src/pages/property-mappings/PropertyMappingTestForm.ts:59 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:166 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:175 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:185 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:194 | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:92 | #: src/pages/providers/proxy/ProxyProviderForm.ts:92 | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:143 | #: src/pages/providers/proxy/ProxyProviderForm.ts:143 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:71 | #: src/pages/providers/saml/SAMLProviderForm.ts:71 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:133 | #: src/pages/providers/saml/SAMLProviderForm.ts:133 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:149 | #: src/pages/providers/saml/SAMLProviderForm.ts:149 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:169 | #: src/pages/providers/saml/SAMLProviderForm.ts:175 | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:185 | #: src/pages/providers/saml/SAMLProviderForm.ts:191 | ||||||
| #: src/pages/providers/saml/SAMLProviderImportForm.ts:55 | #: src/pages/providers/saml/SAMLProviderImportForm.ts:55 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:164 | #: src/pages/sources/ldap/LDAPSourceForm.ts:164 | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts:190 | #: src/pages/sources/ldap/LDAPSourceForm.ts:190 | ||||||
| @ -1916,7 +1916,7 @@ msgstr "" | |||||||
| msgid "NameID Policy" | msgid "NameID Policy" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:174 | #: src/pages/providers/saml/SAMLProviderForm.ts:180 | ||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -2426,30 +2426,30 @@ msgstr "" | |||||||
| msgid "Publisher" | msgid "Publisher" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:143 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:146 | ||||||
| msgid "RS256 (Asymmetric Encryption)" | msgid "RS256 (Asymmetric Encryption)" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:172 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:181 | ||||||
| msgid "RSA Key" | msgid "RSA Key" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:237 | #: src/pages/providers/saml/SAMLProviderForm.ts:243 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:200 | #: src/pages/sources/saml/SAMLSourceForm.ts:200 | ||||||
| msgid "RSA-SHA1" | msgid "RSA-SHA1" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:240 | #: src/pages/providers/saml/SAMLProviderForm.ts:246 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:203 | #: src/pages/sources/saml/SAMLSourceForm.ts:203 | ||||||
| msgid "RSA-SHA256" | msgid "RSA-SHA256" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:243 | #: src/pages/providers/saml/SAMLProviderForm.ts:249 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:206 | #: src/pages/sources/saml/SAMLSourceForm.ts:206 | ||||||
| msgid "RSA-SHA384" | msgid "RSA-SHA384" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:246 | #: src/pages/providers/saml/SAMLProviderForm.ts:252 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:209 | #: src/pages/sources/saml/SAMLSourceForm.ts:209 | ||||||
| msgid "RSA-SHA512" | msgid "RSA-SHA512" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -2474,11 +2474,14 @@ msgstr "" | |||||||
| msgid "Redirect" | msgid "Redirect" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:119 |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:107 | #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:107 | ||||||
| msgid "Redirect URIs" | msgid "Redirect URIs" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:119 | ||||||
|  | msgid "Redirect URIs/Origins" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:104 | #: src/pages/sources/saml/SAMLSourceForm.ts:104 | ||||||
| msgid "Redirect binding" | msgid "Redirect binding" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -2574,22 +2577,22 @@ msgstr "" | |||||||
| msgid "SAML Attribute Name" | msgid "SAML Attribute Name" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:218 | #: src/pages/providers/saml/SAMLProviderForm.ts:224 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:181 | #: src/pages/sources/saml/SAMLSourceForm.ts:181 | ||||||
| msgid "SHA1" | msgid "SHA1" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:221 | #: src/pages/providers/saml/SAMLProviderForm.ts:227 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:184 | #: src/pages/sources/saml/SAMLSourceForm.ts:184 | ||||||
| msgid "SHA256" | msgid "SHA256" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:224 | #: src/pages/providers/saml/SAMLProviderForm.ts:230 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:187 | #: src/pages/sources/saml/SAMLSourceForm.ts:187 | ||||||
| msgid "SHA384" | msgid "SHA384" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:227 | #: src/pages/providers/saml/SAMLProviderForm.ts:233 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:190 | #: src/pages/sources/saml/SAMLSourceForm.ts:190 | ||||||
| msgid "SHA512" | msgid "SHA512" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -2620,7 +2623,7 @@ msgstr "" | |||||||
| msgid "SSO URL" | msgid "SSO URL" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:229 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:238 | ||||||
| msgid "Same identifier is used for all providers" | msgid "Same identifier is used for all providers" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -2634,7 +2637,7 @@ msgstr "" | |||||||
|  |  | ||||||
| #: src/elements/oauth/UserCodeList.ts:31 | #: src/elements/oauth/UserCodeList.ts:31 | ||||||
| #: src/elements/oauth/UserRefreshList.ts:31 | #: src/elements/oauth/UserRefreshList.ts:31 | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:152 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:155 | ||||||
| msgid "Scopes" | msgid "Scopes" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -2669,7 +2672,7 @@ msgstr "" | |||||||
| msgid "Select users to add" | msgid "Select users to add" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:168 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:177 | ||||||
| msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data." | msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -2730,11 +2733,11 @@ msgstr "" | |||||||
| msgid "Session duration" | msgid "Session duration" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:209 | #: src/pages/providers/saml/SAMLProviderForm.ts:215 | ||||||
| msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:205 | #: src/pages/providers/saml/SAMLProviderForm.ts:211 | ||||||
| msgid "Session valid not on or after" | msgid "Session valid not on or after" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -2775,7 +2778,7 @@ msgstr "" | |||||||
| msgid "Sign up." | msgid "Sign up." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts:232 | #: src/pages/providers/saml/SAMLProviderForm.ts:238 | ||||||
| #: src/pages/sources/saml/SAMLSourceForm.ts:195 | #: src/pages/sources/saml/SAMLSourceForm.ts:195 | ||||||
| msgid "Signature algorithm" | msgid "Signature algorithm" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -2930,7 +2933,7 @@ msgstr "" | |||||||
| msgid "Subject" | msgid "Subject" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:190 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:199 | ||||||
| msgid "Subject mode" | msgid "Subject mode" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -3368,7 +3371,7 @@ msgstr "" | |||||||
| msgid "Token expiry" | msgid "Token expiry" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:132 | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:135 | ||||||
| msgid "Token validity" | msgid "Token validity" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @ -3708,6 +3711,10 @@ msgstr "" | |||||||
| msgid "Using source" | msgid "Using source" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:123 | ||||||
|  | msgid "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows." | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts:115 | #: src/pages/providers/proxy/ProxyProviderForm.ts:115 | ||||||
| msgid "Validate SSL Certificates of upstream servers." | msgid "Validate SSL Certificates of upstream servers." | ||||||
| msgstr "" | msgstr "" | ||||||
|  | |||||||
| @ -113,9 +113,12 @@ export class OAuth2ProviderFormPage extends Form<OAuth2Provider> { | |||||||
|                         <input type="text" value="${first(this.provider?.clientSecret, randomString(128))}" class="pf-c-form-control"> |                         <input type="text" value="${first(this.provider?.clientSecret, randomString(128))}" class="pf-c-form-control"> | ||||||
|                     </ak-form-element-horizontal> |                     </ak-form-element-horizontal> | ||||||
|                     <ak-form-element-horizontal |                     <ak-form-element-horizontal | ||||||
|                         label=${t`Redirect URIs`} |                         label=${t`Redirect URIs/Origins`} | ||||||
|                         name="redirectUris"> |                         name="redirectUris"> | ||||||
|                         <textarea class="pf-c-form-control">${this.provider?.redirectUris}</textarea> |                         <textarea class="pf-c-form-control">${this.provider?.redirectUris}</textarea> | ||||||
|  |                         <p class="pf-c-form__helper-text"> | ||||||
|  |                             ${t`Valid redirect URLs after a successful authorization flow. Also specify any origins here for CORS Headers.`} | ||||||
|  |                         </p> | ||||||
|                     </ak-form-element-horizontal> |                     </ak-form-element-horizontal> | ||||||
|                 </div> |                 </div> | ||||||
|             </ak-form-group> |             </ak-form-group> | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer