KEYCLOAK-1152 Internationalization support for admin console
- Added i18n to 'clients', and 'identity providers' sections
This commit is contained in:
parent
7fec1677ee
commit
3aee5eeecf
39 changed files with 1252 additions and 609 deletions
|
@ -6,9 +6,14 @@ cancel=de Cancel
|
||||||
onText=AN
|
onText=AN
|
||||||
offText=AUS
|
offText=AUS
|
||||||
client=de Client
|
client=de Client
|
||||||
|
clients=de Clients
|
||||||
clear=de Clear
|
clear=de Clear
|
||||||
selectOne=de Select One...
|
selectOne=de Select One...
|
||||||
|
|
||||||
|
true=de True
|
||||||
|
false=de False
|
||||||
|
|
||||||
|
|
||||||
# Realm settings
|
# Realm settings
|
||||||
realm-detail.enabled.tooltip=de Users and clients can only access a realm if it's enabled
|
realm-detail.enabled.tooltip=de Users and clients can only access a realm if it's enabled
|
||||||
registrationAllowed=de User registration
|
registrationAllowed=de User registration
|
||||||
|
@ -112,7 +117,7 @@ active-sessions=de Active Sessions
|
||||||
sessions=de Sessions
|
sessions=de Sessions
|
||||||
not-before=de Not Before
|
not-before=de Not Before
|
||||||
not-before.tooltip=de Revoke any tokens issued before this date.
|
not-before.tooltip=de Revoke any tokens issued before this date.
|
||||||
set-to-now=de Set To Now
|
set-to-now=de Set to now
|
||||||
push=de Push
|
push=de Push
|
||||||
push.tooltip=de For every client that has an admin URL, notify them of the new revocation policy.
|
push.tooltip=de For every client that has an admin URL, notify them of the new revocation policy.
|
||||||
|
|
||||||
|
@ -127,3 +132,322 @@ multivalued.label=de Multivalued
|
||||||
multivalued.tooltip=de Indicates if attribute supports multiple values. If true, then the list of all values of this attribute will be set as claim. If false, then just first value will be set as claim
|
multivalued.tooltip=de Indicates if attribute supports multiple values. If true, then the list of all values of this attribute will be set as claim. If false, then just first value will be set as claim
|
||||||
selectRole.label=de Select Role
|
selectRole.label=de Select Role
|
||||||
selectRole.tooltip=de Enter role in the textbox to the left, or click this button to browse and select the role you want
|
selectRole.tooltip=de Enter role in the textbox to the left, or click this button to browse and select the role you want
|
||||||
|
|
||||||
|
# client details
|
||||||
|
clients.tooltip=de Clients are trusted browser apps and web services in a realm. These clients can request a login. You can also define client specific roles.
|
||||||
|
search.placeholder=de Search...
|
||||||
|
create=de Create
|
||||||
|
import=de Import
|
||||||
|
client-id=de Client ID
|
||||||
|
base-url=de Base URL
|
||||||
|
actions=de Actions
|
||||||
|
not-defined=de Not defined
|
||||||
|
edit=de Edit
|
||||||
|
delete=de Delete
|
||||||
|
no-results=de No results
|
||||||
|
no-clients-available=de No clients available
|
||||||
|
add-client=de Add Client
|
||||||
|
select-file=de Select file
|
||||||
|
view-details=de View details
|
||||||
|
clear-import=de Clear import
|
||||||
|
client-id.tooltip=de Specifies ID referenced in URI and tokens. For example 'my-client'
|
||||||
|
client.name.tooltip=de Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}
|
||||||
|
client.enabled.tooltip=de Disabled clients cannot initiate a login or have obtain access tokens.
|
||||||
|
consent-required=de Consent Required
|
||||||
|
consent-required.tooltip=de If enabled users have to consent to client access.
|
||||||
|
direct-grants-only=de Direct Grants Only
|
||||||
|
direct-grants-only.tooltip=de When enabled, client can only obtain grants from grant REST API.
|
||||||
|
client-protocol=de Client Protocol
|
||||||
|
client-protocol.tooltip=de 'OpenID connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.
|
||||||
|
access-type=de Access Type
|
||||||
|
access-type.tooltip=de 'Confidential' clients require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' clients are web services that never initiate a login.
|
||||||
|
service-accounts-enabled=de Service Accounts Enabled
|
||||||
|
service-accounts-enabled.tooltip=de Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client.
|
||||||
|
include-authnstatement=de Include AuthnStatement
|
||||||
|
include-authnstatement.tooltip=de Should a statement specifying the method and timestamp be included in login responses?
|
||||||
|
sign-documents=de Sign Documents
|
||||||
|
sign-documents.tooltip=de Should SAML documents be signed by the realm?
|
||||||
|
sign-assertions=de Sign Assertions
|
||||||
|
sign-assertions.tooltip=de Should assertions inside SAML documents be signed? This setting isn't needed if document is already being signed.
|
||||||
|
signature-algorithm=de Signature Algorithm
|
||||||
|
signature-algorithm.tooltip=de The signature algorithm to use to sign documents.
|
||||||
|
canonicalization-method=de Canonicalization Method
|
||||||
|
canonicalization-method.tooltip=de Canonicalization Method for XML signatures.
|
||||||
|
encrypt-assertions=de Encrypt Assertions
|
||||||
|
encrypt-assertions.tooltip=de Should SAML assertions be encrypted with client's public key using AES?
|
||||||
|
client-signature-required=de Client Signature Required
|
||||||
|
client-signature-required.tooltip=de Will the client sign their saml requests and responses? And should they be validated?
|
||||||
|
force-post-binding=de Force POST Binding
|
||||||
|
force-post-binding.tooltip=de Always use POST binding for responses.
|
||||||
|
front-channel-logout=de Front Channel Logout
|
||||||
|
front-channel-logout.tooltip=de When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.
|
||||||
|
force-name-id-format=de Force Name ID Format
|
||||||
|
force-name-id-format.tooltip=de Ignore requested NameID subject format and use admin console configured one.
|
||||||
|
name-id-format=de Name ID Format
|
||||||
|
name-id-format.tooltip=de The name ID format to use for the subject.
|
||||||
|
root-url=de Root URL
|
||||||
|
root-url.tooltip=de Root URL appended to relative URLs
|
||||||
|
valid-redirect-uris=de Valid Redirect URIs
|
||||||
|
valid-redirect-uris.tooltip=de Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.
|
||||||
|
base-url.tooltip=de Default URL to use when the auth server needs to redirect or link back to the client.
|
||||||
|
admin-url=de Admin URL
|
||||||
|
admin-url.tooltip=de URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other adminstrative tasks. Usually this is set to the base URL of the client.
|
||||||
|
master-saml-processing-url=de Master SAML Processing URL
|
||||||
|
master-saml-processing-url.tooltip=de If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overiden for each binding and service in the Fine Grain SAML Endpoint Configuration.
|
||||||
|
idp-sso-url-ref=de IDP Initiated SSO URL Name
|
||||||
|
idp-sso-url-ref.tooltip=de URL fragment name to reference client when you want to do IDP Initiated SSO. Leaving this empty will disable IDP Initiated SSO. The URL you will reference from your browser will be: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}
|
||||||
|
idp-sso-relay-state=de IDP Initiated SSO Relay State
|
||||||
|
idp-sso-relay-state.tooltip=de Relay state you want to send with SAML request when you want to do IDP Initiated SSO.
|
||||||
|
web-origins=de Web Origins
|
||||||
|
web-origins.tooltip=de Allowed CORS origins. To permit all origins of Valid Redirect URIs add '+'. To permit all origins add '*'.
|
||||||
|
fine-saml-endpoint-conf=de Fine Grain SAML Endpoint Configuration
|
||||||
|
fine-saml-endpoint-conf.tooltip=de Expand this section to configure exact URLs for Assertion Consumer and Single Logout Service.
|
||||||
|
assertion-consumer-post-binding-url=de Assertion Consumer Service POST Binding URL
|
||||||
|
assertion-consumer-post-binding-url.tooltip=de SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.
|
||||||
|
assertion-consumer-redirect-binding-url=de Assertion Consumer Service Redirect Binding URL
|
||||||
|
assertion-consumer-redirect-binding-url.tooltip=de SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.
|
||||||
|
logout-service-binding-post-url=de Logout Service POST Binding URL
|
||||||
|
logout-service-binding-post-url.tooltip=de SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding
|
||||||
|
logout-service-redir-binding-url=de Logout Service Redirect Binding URL
|
||||||
|
logout-service-redir-binding-url.tooltip=de SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.
|
||||||
|
|
||||||
|
# client import
|
||||||
|
import-client=de Import Client
|
||||||
|
format-option=de Format Option
|
||||||
|
select-format=de Select a Format
|
||||||
|
import-file=de Import File
|
||||||
|
|
||||||
|
# client tabs
|
||||||
|
settings=de Settings
|
||||||
|
credentials=de Credentials
|
||||||
|
saml-keys=de SAML Keys
|
||||||
|
roles=de Roles
|
||||||
|
mappers=de Mappers
|
||||||
|
mappers.tootip=de Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server.
|
||||||
|
scope=de Scope
|
||||||
|
scope.tooltip=de Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client.
|
||||||
|
sessions.tooltip=de View active sessions for this client. Allows you to see which users are active and when they logged in.
|
||||||
|
offline-access=de Offline Access
|
||||||
|
offline-access.tooltip=de View offline sessions for this client. Allows you to see which users retrieve offline token and when they retrieve it. To revoke all tokens for the client, go to Revocation tab and set not before value to now.
|
||||||
|
clustering=de Clustering
|
||||||
|
installation=de Installation
|
||||||
|
installation.tooltip=de Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your clients.
|
||||||
|
service-account-roles=de Service Account Roles
|
||||||
|
service-account-roles.tooltip=de Allows you to authenticate role mappings for the service account dedicated to this client.
|
||||||
|
|
||||||
|
# client credentials
|
||||||
|
client-authenticator=de Client Authenticator
|
||||||
|
client-authenticator.tooltip=de Client Authenticator used for authentication this client against Keycloak server
|
||||||
|
certificate.tooltip=de Client Certificate for validate JWT issued by client and signed by Client private key from your keystore.
|
||||||
|
no-client-certificate-configured=de No client certificate configured
|
||||||
|
gen-new-keys-and-cert=de Generate new keys and certificate
|
||||||
|
import-certificate=de Import Certificate
|
||||||
|
gen-client-private-key=de Generate Client Private Key
|
||||||
|
generate-private-key=de Generate Private Key
|
||||||
|
archive-format=de Archive Format
|
||||||
|
archive-format.tooltip=de Java keystore or PKCS12 archive format.
|
||||||
|
key-alias=de Key Alias
|
||||||
|
key-alias.tooltip=de Archive alias for your private key and certificate.
|
||||||
|
key-password=de Key Password
|
||||||
|
key-password.tooltip=de Password to access the private key in the archive
|
||||||
|
store-password=de Store Password
|
||||||
|
store-password.tooltip=de Password to access the archive itself
|
||||||
|
generate-and-download=de Generate and Download
|
||||||
|
client-certificate-import=de Client Certificate Import
|
||||||
|
import-client-certificate=de Import Client Certificate
|
||||||
|
jwt-import.key-alias.tooltip=de Archive alias for your certificate.
|
||||||
|
secret=de Secret
|
||||||
|
regenerate-secret=de Regenerate Secret
|
||||||
|
add-role=de Add Role
|
||||||
|
role-name=de Role Name
|
||||||
|
composite=de Composite
|
||||||
|
description=de Description
|
||||||
|
no-client-roles-available=de No client roles available
|
||||||
|
scope-param-required=de Scope Param Required
|
||||||
|
scope-param-required.tooltip=de This role will only be granted if scope parameter with role name is used during authorization/token request.
|
||||||
|
composite-roles=de Composite Roles
|
||||||
|
composite-roles.tooltip=de When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly.
|
||||||
|
realm-roles=de Realm Roles
|
||||||
|
available-roles=de Available Roles
|
||||||
|
add-selected=de Add selected
|
||||||
|
associated-roles=de Associated Roles
|
||||||
|
composite.associated-realm-roles.tooltip=de Realm level roles associated with this composite role.
|
||||||
|
composite.available-realm-roles.tooltip=de Realm level roles associated with this composite role.
|
||||||
|
remove-selected=de Remove selected
|
||||||
|
client-roles=de Client Roles
|
||||||
|
select-client-to-view-roles=de Select client to view roles for client
|
||||||
|
available-roles.tooltip=de Roles from this client that you can associate to this composite role.
|
||||||
|
client.associated-roles.tooltip=de Client roles associated with this composite role.
|
||||||
|
add-builtin=de Add Builtin
|
||||||
|
category=de Category
|
||||||
|
type=de Type
|
||||||
|
no-mappers-available=de No mappers available
|
||||||
|
add-builtin-protocol-mappers=de Add Builtin Protocol Mappers
|
||||||
|
add-builtin-protocol-mapper=de Add Builtin Protocol Mapper
|
||||||
|
scope-mappings=de Scope Mappings
|
||||||
|
full-scope-allowed=de Full Scope Allowed
|
||||||
|
full-scope-allowed.tooltip=de Allows you to disable all restrictions.
|
||||||
|
scope.available-roles.tooltip=de Realm level roles that can be assigned to scope.
|
||||||
|
assigned-roles=de Assigned Roles
|
||||||
|
assigned-roles.tooltip=de Realm level roles assigned to scope.
|
||||||
|
effective-roles=de Effective Roles
|
||||||
|
realm.effective-roles.tooltip=de Assigned realm level roles that may have been inherited from a composite role.
|
||||||
|
select-client-roles.tooltip=de Select client to view roles for client
|
||||||
|
assign.available-roles.tooltip=de Client roles available to be assigned.
|
||||||
|
client.assigned-roles.tooltip=de Assigned client roles.
|
||||||
|
client.effective-roles.tooltip=de Assigned client roles that may have been inherited from a composite role.
|
||||||
|
basic-configuration=de Basic configuration
|
||||||
|
node-reregistration-timeout=de Node Re-registration Timeout
|
||||||
|
node-reregistration-timeout.tooltip=de Interval to specify max time for registered clients cluster nodes to re-register. If cluster node won't send re-registration request to Keycloak within this time, it will be unregistered from Keycloak
|
||||||
|
registered-cluster-nodes=de Registered cluster nodes
|
||||||
|
register-node-manually=de Register node manually
|
||||||
|
test-cluster-availability=de Test cluster availability
|
||||||
|
last-registration=de Last registration
|
||||||
|
node-host=de Node host
|
||||||
|
no-registered-cluster-nodes=de No registered cluster nodes available
|
||||||
|
cluster-nodes=de Cluster Nodes
|
||||||
|
add-node=de Add Node
|
||||||
|
active-sessions.tooltip=de Total number of active user sessions for this client.
|
||||||
|
show-sessions=de Show Sessions
|
||||||
|
show-sessions.tooltip=de Warning, this is a potentially expensive operation depending on number of active sessions.
|
||||||
|
user=de User
|
||||||
|
from-ip=de From IP
|
||||||
|
session-start=de Session Start
|
||||||
|
first-page=de First Page
|
||||||
|
previous-page=de Previous Page
|
||||||
|
next-page=de Next Page
|
||||||
|
client-revoke.not-before.tooltip=de Revoke any tokens issued before this date for this client.
|
||||||
|
client-revoke.push.tooltip=de If admin URL is configured for this client, push this policy to that client.
|
||||||
|
select-a-format=de Select a Format
|
||||||
|
download=de Download
|
||||||
|
offline-tokens=de Offline Tokens
|
||||||
|
offline-tokens.tooltip=de Total number of offline tokens for this client.
|
||||||
|
show-offline-tokens=de Show Offline Tokens
|
||||||
|
show-offline-tokens.tooltip=de Warning, this is a potentially expensive operation depending on number of offline tokens.
|
||||||
|
token-issued=de Token Issued
|
||||||
|
key-export=de Key Export
|
||||||
|
key-import=de Key Import
|
||||||
|
export-saml-key=de Export SAML Key
|
||||||
|
import-saml-key=de Import SAML Key
|
||||||
|
realm-certificate-alias=de Realm Certificate Alias
|
||||||
|
realm-certificate-alias.tooltip=de Realm certificate is stored in archive too. This is the alias to it.
|
||||||
|
signing-key=de Signing Key
|
||||||
|
saml-signing-key=de SAML Signing Key.
|
||||||
|
private-key=de Private Key
|
||||||
|
generate-new-keys=de Generate new keys
|
||||||
|
export=de Export
|
||||||
|
encryption-key=de Encryption Key
|
||||||
|
saml-encryption-key.tooltip=de SAML Encryption Key.
|
||||||
|
service-accounts=de Service Accounts
|
||||||
|
service-account.available-roles.tooltip=de Realm level roles that can be assigned to service account.
|
||||||
|
service-account.assigned-roles.tooltip=de Realm level roles assigned to service account.
|
||||||
|
service-account-is-not-enabled-for=de Service account is not enabled for {{client}}
|
||||||
|
create-protocol-mappers=de Create Protocol Mappers
|
||||||
|
create-protocol-mapper=de Create Protocol Mapper
|
||||||
|
protocol=de Protocol
|
||||||
|
protocol.tooltip=de Protocol.
|
||||||
|
id=de ID
|
||||||
|
mapper.name.tooltip=de Name of the mapper.
|
||||||
|
mapper.consent-required.tooltip=de When granting temporary access, must the user consent to providing this data to the client?
|
||||||
|
consent-text=de Consent Text
|
||||||
|
consent-text.tooltip=de Text to display on consent page.
|
||||||
|
mapper-type=de Mapper Type
|
||||||
|
select-role=de Select role
|
||||||
|
select-role.tooltip=de Enter role in the textbox to the left, or click this button to browse and select the role you want.
|
||||||
|
|
||||||
|
# realm identity providers
|
||||||
|
identity-providers=de Identity Providers
|
||||||
|
table-of-identity-providers=de Table of identity providers
|
||||||
|
add-provider.placeholder=de Add provider...
|
||||||
|
provider=de Provider
|
||||||
|
gui-order=de GUI order
|
||||||
|
redirect-uri=de Redirect URI
|
||||||
|
redirect-uri.tooltip=de The redirect uri to use when configuring the identity provider.
|
||||||
|
alias=de Alias
|
||||||
|
identity-provider.alias.tooltip=de The alias uniquely identifies an identity provider and it is also used to build the redirect uri.
|
||||||
|
identity-provider.enabled.tooltip=de Enable/disable this identity provider.
|
||||||
|
authenticate-by-default=de Authenticate by Default
|
||||||
|
identity-provider.authenticate-by-default.tooltip=de Indicates if this provider should be tried by default for authentication even before displaying login screen.
|
||||||
|
store-tokens=de Store Tokens
|
||||||
|
identity-provider.store-tokens.tooltip=de Enable/disable if tokens must be stored after authenticating users.
|
||||||
|
stored-tokens-readable=de Stored Tokens Readable
|
||||||
|
identity-provider.stored-tokens-readable.tooltip=de Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.
|
||||||
|
update-profile-on-first-login=de Update Profile on First Login
|
||||||
|
on=de On
|
||||||
|
on-missing-info=de On missing info
|
||||||
|
off=de Off
|
||||||
|
update-profile-on-first-login.tooltip=de Define conditions under which a user has to update their profile during first-time login.
|
||||||
|
trust-email=de Trust Email
|
||||||
|
trust-email.tooltip=de If enabled then email provided by this provider is not verified even if verification is enabled for the realm.
|
||||||
|
gui-order.tooltip=de Number defining order of the provider in GUI (eg. on Login page).
|
||||||
|
openid-connect-config=de OpenID Connect Config
|
||||||
|
openid-connect-config.tooltip=de OIDC SP and external IDP configuration.
|
||||||
|
authorization-url=de Authorization URL
|
||||||
|
authorization-url.tooltip=de The Authorization Url.
|
||||||
|
token-url=de Token URL
|
||||||
|
token-url.tooltip=de The Token URL.
|
||||||
|
logout-url=de Logout URL
|
||||||
|
identity-provider.logout-url.tooltip=de End session endpoint to use to logout user from external IDP.
|
||||||
|
backchannel-logout=de Backchannel Logout
|
||||||
|
backchannel-logout.tooltip=de Does the external IDP support backchannel logout?
|
||||||
|
user-info-url=de User Info URL
|
||||||
|
user-info-url.tooltip=de The User Info Url. This is optional.
|
||||||
|
identity-provider.client-id.tooltip=de The client or client identifier registered within the identity provider.
|
||||||
|
client-secret=de Client Secret
|
||||||
|
show-secret=de Show secret
|
||||||
|
hide-secret=de Hide secret
|
||||||
|
client-secret.tooltip=de The client or client secret registered within the identity provider.
|
||||||
|
issuer=de Issuer
|
||||||
|
issuer.tooltip=de The issuer identifier for the issuer of the response. If not provided, no validation will be performed.
|
||||||
|
default-scopes=de Default Scopes
|
||||||
|
identity-provider.default-scopes.tooltip=de The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'.
|
||||||
|
prompt=de Prompt
|
||||||
|
unspecified.option=de unspecified
|
||||||
|
none.option=de none
|
||||||
|
consent.option=de consent
|
||||||
|
login.option=de login
|
||||||
|
select-account.option=de select_account
|
||||||
|
prompt.tooltip=de Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.
|
||||||
|
validate-signatures=de Validate Signatures
|
||||||
|
identity-provider.validate-signatures.tooltip=de Enable/disable signature validation of external IDP signatures.
|
||||||
|
validating-public-key=de Validating Public Key
|
||||||
|
identity-provider.validating-public-key.tooltip=de The public key in PEM format that must be used to verify external IDP signatures.
|
||||||
|
import-external-idp-config=de Import External IDP Config
|
||||||
|
import-external-idp-config.tooltip=de Allows you to load external IDP metadata from a config file or to download it from a URL.
|
||||||
|
import-from-url=de Import from URL
|
||||||
|
identity-provider.import-from-url.tooltip=de Import metadata from a remote IDP discovery descriptor.
|
||||||
|
import-from-file=de Import from file
|
||||||
|
identity-provider.import-from-file.tooltip=de Import metadata from a downloaded IDP discovery descriptor.
|
||||||
|
saml-config=de SAML Config
|
||||||
|
identity-provider.saml-config.tooltip=de SAML SP and external IDP configuration.
|
||||||
|
single-signon-service-url=de Single Sign-On Service URL
|
||||||
|
saml.single-signon-service-url.tooltip=de The Url that must be used to send authentication requests (SAML AuthnRequest).
|
||||||
|
single-logout-service-url=de Single Logout Service URL
|
||||||
|
saml.single-logout-service-url.tooltip=de The Url that must be used to send logout requests.
|
||||||
|
nameid-policy-format=de NameID Policy Format
|
||||||
|
nameid-policy-format.tooltip=de Specifies the URI reference corresponding to a name identifier format. Defaults to urn:oasis:names:tc:SAML:2.0:nameid-format:persistent.
|
||||||
|
http-post-binding-response=de HTTP-POST Binding Response
|
||||||
|
http-post-binding-response.tooltip=de Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
|
||||||
|
http-post-binding-for-authn-request=de HTTP-POST Binding for AuthnRequest
|
||||||
|
http-post-binding-for-authn-request.tooltip=de Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
|
||||||
|
want-authn-requests-signed=de Want AuthnRequests Signed
|
||||||
|
want-authn-requests-signed.tooltip=de Indicates whether the identity provider expects signed a AuthnRequest.
|
||||||
|
force-authentication=de Force Authentication
|
||||||
|
identity-provider.force-authentication.tooltip=de Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.
|
||||||
|
validate-signature=de Validate Signature
|
||||||
|
saml.validate-signature.tooltip=de Enable/disable signature validation of SAML responses.
|
||||||
|
validating-x509-certificate=de Validating X509 Certificate
|
||||||
|
validating-x509-certificate.tooltip=de The certificate in PEM format that must be used to check for signatures.
|
||||||
|
saml.import-from-url.tooltip=de Import metadata from a remote IDP SAML entity descriptor.
|
||||||
|
social.client-id.tooltip=de The client identifier registered with the identity provider.
|
||||||
|
social.client-secret.tooltip=de The client secret registered with the identity provider.
|
||||||
|
social.default-scopes.tooltip=de The scopes to be sent when asking for authorization. See documentation for possible values, separator and default value'.
|
||||||
|
key=de Key
|
||||||
|
stackoverflow.key.tooltip=de The Key obtained from Stack Overflow client registration.
|
||||||
|
|
||||||
|
realms=de Realms
|
||||||
|
realm=de Realm
|
||||||
|
|
||||||
|
identity-provider-mappers=de Identity Provider Mappers
|
||||||
|
create-identity-provider-mapper=de Create Identity Provider Mapper
|
||||||
|
add-identity-provider-mapper=de Add Identity Provider Mapper
|
||||||
|
|
|
@ -6,9 +6,14 @@ cancel=Cancel
|
||||||
onText=ON
|
onText=ON
|
||||||
offText=OFF
|
offText=OFF
|
||||||
client=Client
|
client=Client
|
||||||
|
clients=Clients
|
||||||
clear=Clear
|
clear=Clear
|
||||||
selectOne=Select One...
|
selectOne=Select One...
|
||||||
|
|
||||||
|
true=True
|
||||||
|
false=False
|
||||||
|
|
||||||
|
|
||||||
# Realm settings
|
# Realm settings
|
||||||
realm-detail.enabled.tooltip=Users and clients can only access a realm if it's enabled
|
realm-detail.enabled.tooltip=Users and clients can only access a realm if it's enabled
|
||||||
registrationAllowed=User registration
|
registrationAllowed=User registration
|
||||||
|
@ -112,7 +117,7 @@ active-sessions=Active Sessions
|
||||||
sessions=Sessions
|
sessions=Sessions
|
||||||
not-before=Not Before
|
not-before=Not Before
|
||||||
not-before.tooltip=Revoke any tokens issued before this date.
|
not-before.tooltip=Revoke any tokens issued before this date.
|
||||||
set-to-now=Set To Now
|
set-to-now=Set to now
|
||||||
push=Push
|
push=Push
|
||||||
push.tooltip=For every client that has an admin URL, notify them of the new revocation policy.
|
push.tooltip=For every client that has an admin URL, notify them of the new revocation policy.
|
||||||
|
|
||||||
|
@ -126,4 +131,321 @@ userSession.modelNote.tooltip=Name of stored user session note within the UserSe
|
||||||
multivalued.label=Multivalued
|
multivalued.label=Multivalued
|
||||||
multivalued.tooltip=Indicates if attribute supports multiple values. If true, then the list of all values of this attribute will be set as claim. If false, then just first value will be set as claim
|
multivalued.tooltip=Indicates if attribute supports multiple values. If true, then the list of all values of this attribute will be set as claim. If false, then just first value will be set as claim
|
||||||
selectRole.label=Select Role
|
selectRole.label=Select Role
|
||||||
selectRole.tooltip=Enter role in the textbox to the left, or click this button to browse and select the role you want
|
selectRole.tooltip=Enter role in the textbox to the left, or click this button to browse and select the role you want.
|
||||||
|
|
||||||
|
# client details
|
||||||
|
clients.tooltip=Clients are trusted browser apps and web services in a realm. These clients can request a login. You can also define client specific roles.
|
||||||
|
search.placeholder=Search...
|
||||||
|
create=Create
|
||||||
|
import=Import
|
||||||
|
client-id=Client ID
|
||||||
|
base-url=Base URL
|
||||||
|
actions=Actions
|
||||||
|
not-defined=Not defined
|
||||||
|
edit=Edit
|
||||||
|
delete=Delete
|
||||||
|
no-results=No results
|
||||||
|
no-clients-available=No clients available
|
||||||
|
add-client=Add Client
|
||||||
|
select-file=Select file
|
||||||
|
view-details=View details
|
||||||
|
clear-import=Clear import
|
||||||
|
client-id.tooltip=Specifies ID referenced in URI and tokens. For example 'my-client'
|
||||||
|
client.name.tooltip=Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}
|
||||||
|
client.enabled.tooltip=Disabled clients cannot initiate a login or have obtain access tokens.
|
||||||
|
consent-required=Consent Required
|
||||||
|
consent-required.tooltip=If enabled users have to consent to client access.
|
||||||
|
direct-grants-only=Direct Grants Only
|
||||||
|
direct-grants-only.tooltip=When enabled, client can only obtain grants from grant REST API.
|
||||||
|
client-protocol=Client Protocol
|
||||||
|
client-protocol.tooltip='OpenID connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.
|
||||||
|
access-type=Access Type
|
||||||
|
access-type.tooltip='Confidential' clients require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' clients are web services that never initiate a login.
|
||||||
|
service-accounts-enabled=Service Accounts Enabled
|
||||||
|
service-accounts-enabled.tooltip=Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client.
|
||||||
|
include-authnstatement=Include AuthnStatement
|
||||||
|
include-authnstatement.tooltip=Should a statement specifying the method and timestamp be included in login responses?
|
||||||
|
sign-documents=Sign Documents
|
||||||
|
sign-documents.tooltip=Should SAML documents be signed by the realm?
|
||||||
|
sign-assertions=Sign Assertions
|
||||||
|
sign-assertions.tooltip=Should assertions inside SAML documents be signed? This setting isn't needed if document is already being signed.
|
||||||
|
signature-algorithm=Signature Algorithm
|
||||||
|
signature-algorithm.tooltip=The signature algorithm to use to sign documents.
|
||||||
|
canonicalization-method=Canonicalization Method
|
||||||
|
canonicalization-method.tooltip=Canonicalization Method for XML signatures.
|
||||||
|
encrypt-assertions=Encrypt Assertions
|
||||||
|
encrypt-assertions.tooltip=Should SAML assertions be encrypted with client's public key using AES?
|
||||||
|
client-signature-required=Client Signature Required
|
||||||
|
client-signature-required.tooltip=Will the client sign their saml requests and responses? And should they be validated?
|
||||||
|
force-post-binding=Force POST Binding
|
||||||
|
force-post-binding.tooltip=Always use POST binding for responses.
|
||||||
|
front-channel-logout=Front Channel Logout
|
||||||
|
front-channel-logout.tooltip=When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.
|
||||||
|
force-name-id-format=Force Name ID Format
|
||||||
|
force-name-id-format.tooltip=Ignore requested NameID subject format and use admin console configured one.
|
||||||
|
name-id-format=Name ID Format
|
||||||
|
name-id-format.tooltip=The name ID format to use for the subject.
|
||||||
|
root-url=Root URL
|
||||||
|
root-url.tooltip=Root URL appended to relative URLs
|
||||||
|
valid-redirect-uris=Valid Redirect URIs
|
||||||
|
valid-redirect-uris.tooltip=Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.
|
||||||
|
base-url.tooltip=Default URL to use when the auth server needs to redirect or link back to the client.
|
||||||
|
admin-url=Admin URL
|
||||||
|
admin-url.tooltip=URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other adminstrative tasks. Usually this is set to the base URL of the client.
|
||||||
|
master-saml-processing-url=Master SAML Processing URL
|
||||||
|
master-saml-processing-url.tooltip=If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overiden for each binding and service in the Fine Grain SAML Endpoint Configuration.
|
||||||
|
idp-sso-url-ref=IDP Initiated SSO URL Name
|
||||||
|
idp-sso-url-ref.tooltip=URL fragment name to reference client when you want to do IDP Initiated SSO. Leaving this empty will disable IDP Initiated SSO. The URL you will reference from your browser will be: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}
|
||||||
|
idp-sso-relay-state=IDP Initiated SSO Relay State
|
||||||
|
idp-sso-relay-state.tooltip=Relay state you want to send with SAML request when you want to do IDP Initiated SSO.
|
||||||
|
web-origins=Web Origins
|
||||||
|
web-origins.tooltip=Allowed CORS origins. To permit all origins of Valid Redirect URIs add '+'. To permit all origins add '*'.
|
||||||
|
fine-saml-endpoint-conf=Fine Grain SAML Endpoint Configuration
|
||||||
|
fine-saml-endpoint-conf.tooltip=Expand this section to configure exact URLs for Assertion Consumer and Single Logout Service.
|
||||||
|
assertion-consumer-post-binding-url=Assertion Consumer Service POST Binding URL
|
||||||
|
assertion-consumer-post-binding-url.tooltip=SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.
|
||||||
|
assertion-consumer-redirect-binding-url=Assertion Consumer Service Redirect Binding URL
|
||||||
|
assertion-consumer-redirect-binding-url.tooltip=SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.
|
||||||
|
logout-service-binding-post-url=Logout Service POST Binding URL
|
||||||
|
logout-service-binding-post-url.tooltip=SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding
|
||||||
|
logout-service-redir-binding-url=Logout Service Redirect Binding URL
|
||||||
|
logout-service-redir-binding-url.tooltip=SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.
|
||||||
|
|
||||||
|
# client import
|
||||||
|
import-client=Import Client
|
||||||
|
format-option=Format Option
|
||||||
|
select-format=Select a Format
|
||||||
|
import-file=Import File
|
||||||
|
|
||||||
|
# client tabs
|
||||||
|
settings=Settings
|
||||||
|
credentials=Credentials
|
||||||
|
saml-keys=SAML Keys
|
||||||
|
roles=Roles
|
||||||
|
mappers=Mappers
|
||||||
|
mappers.tootip=Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server.
|
||||||
|
scope=Scope
|
||||||
|
scope.tooltip=Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client.
|
||||||
|
sessions.tooltip=View active sessions for this client. Allows you to see which users are active and when they logged in.
|
||||||
|
offline-access=Offline Access
|
||||||
|
offline-access.tooltip=View offline sessions for this client. Allows you to see which users retrieve offline token and when they retrieve it. To revoke all tokens for the client, go to Revocation tab and set not before value to now.
|
||||||
|
clustering=Clustering
|
||||||
|
installation=Installation
|
||||||
|
installation.tooltip=Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your clients.
|
||||||
|
service-account-roles=Service Account Roles
|
||||||
|
service-account-roles.tooltip=Allows you to authenticate role mappings for the service account dedicated to this client.
|
||||||
|
|
||||||
|
# client credentials
|
||||||
|
client-authenticator=Client Authenticator
|
||||||
|
client-authenticator.tooltip=Client Authenticator used for authentication this client against Keycloak server
|
||||||
|
certificate.tooltip=Client Certificate for validate JWT issued by client and signed by Client private key from your keystore.
|
||||||
|
no-client-certificate-configured=No client certificate configured
|
||||||
|
gen-new-keys-and-cert=Generate new keys and certificate
|
||||||
|
import-certificate=Import Certificate
|
||||||
|
gen-client-private-key=Generate Client Private Key
|
||||||
|
generate-private-key=Generate Private Key
|
||||||
|
archive-format=Archive Format
|
||||||
|
archive-format.tooltip=Java keystore or PKCS12 archive format.
|
||||||
|
key-alias=Key Alias
|
||||||
|
key-alias.tooltip=Archive alias for your private key and certificate.
|
||||||
|
key-password=Key Password
|
||||||
|
key-password.tooltip=Password to access the private key in the archive
|
||||||
|
store-password=Store Password
|
||||||
|
store-password.tooltip=Password to access the archive itself
|
||||||
|
generate-and-download=Generate and Download
|
||||||
|
client-certificate-import=Client Certificate Import
|
||||||
|
import-client-certificate=Import Client Certificate
|
||||||
|
jwt-import.key-alias.tooltip=Archive alias for your certificate.
|
||||||
|
secret=Secret
|
||||||
|
regenerate-secret=Regenerate Secret
|
||||||
|
add-role=Add Role
|
||||||
|
role-name=Role Name
|
||||||
|
composite=Composite
|
||||||
|
description=Description
|
||||||
|
no-client-roles-available=No client roles available
|
||||||
|
scope-param-required=Scope Param Required
|
||||||
|
scope-param-required.tooltip=This role will only be granted if scope parameter with role name is used during authorization/token request.
|
||||||
|
composite-roles=Composite Roles
|
||||||
|
composite-roles.tooltip=When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly.
|
||||||
|
realm-roles=Realm Roles
|
||||||
|
available-roles=Available Roles
|
||||||
|
add-selected=Add selected
|
||||||
|
associated-roles=Associated Roles
|
||||||
|
composite.associated-realm-roles.tooltip=Realm level roles associated with this composite role.
|
||||||
|
composite.available-realm-roles.tooltip=Realm level roles associated with this composite role.
|
||||||
|
remove-selected=Remove selected
|
||||||
|
client-roles=Client Roles
|
||||||
|
select-client-to-view-roles=Select client to view roles for client
|
||||||
|
available-roles.tooltip=Roles from this client that you can associate to this composite role.
|
||||||
|
client.associated-roles.tooltip=Client roles associated with this composite role.
|
||||||
|
add-builtin=Add Builtin
|
||||||
|
category=Category
|
||||||
|
type=Type
|
||||||
|
no-mappers-available=No mappers available
|
||||||
|
add-builtin-protocol-mappers=Add Builtin Protocol Mappers
|
||||||
|
add-builtin-protocol-mapper=Add Builtin Protocol Mapper
|
||||||
|
scope-mappings=Scope Mappings
|
||||||
|
full-scope-allowed=Full Scope Allowed
|
||||||
|
full-scope-allowed.tooltip=Allows you to disable all restrictions.
|
||||||
|
scope.available-roles.tooltip=Realm level roles that can be assigned to scope.
|
||||||
|
assigned-roles=Assigned Roles
|
||||||
|
assigned-roles.tooltip=Realm level roles assigned to scope.
|
||||||
|
effective-roles=Effective Roles
|
||||||
|
realm.effective-roles.tooltip=Assigned realm level roles that may have been inherited from a composite role.
|
||||||
|
select-client-roles.tooltip=Select client to view roles for client
|
||||||
|
assign.available-roles.tooltip=Client roles available to be assigned.
|
||||||
|
client.assigned-roles.tooltip=Assigned client roles.
|
||||||
|
client.effective-roles.tooltip=Assigned client roles that may have been inherited from a composite role.
|
||||||
|
basic-configuration=Basic configuration
|
||||||
|
node-reregistration-timeout=Node Re-registration Timeout
|
||||||
|
node-reregistration-timeout.tooltip=Interval to specify max time for registered clients cluster nodes to re-register. If cluster node won't send re-registration request to Keycloak within this time, it will be unregistered from Keycloak
|
||||||
|
registered-cluster-nodes=Registered cluster nodes
|
||||||
|
register-node-manually=Register node manually
|
||||||
|
test-cluster-availability=Test cluster availability
|
||||||
|
last-registration=Last registration
|
||||||
|
node-host=Node host
|
||||||
|
no-registered-cluster-nodes=No registered cluster nodes available
|
||||||
|
cluster-nodes=Cluster Nodes
|
||||||
|
add-node=Add Node
|
||||||
|
active-sessions.tooltip=Total number of active user sessions for this client.
|
||||||
|
show-sessions=Show Sessions
|
||||||
|
show-sessions.tooltip=Warning, this is a potentially expensive operation depending on number of active sessions.
|
||||||
|
user=User
|
||||||
|
from-ip=From IP
|
||||||
|
session-start=Session Start
|
||||||
|
first-page=First Page
|
||||||
|
previous-page=Previous Page
|
||||||
|
next-page=Next Page
|
||||||
|
client-revoke.not-before.tooltip=Revoke any tokens issued before this date for this client.
|
||||||
|
client-revoke.push.tooltip=If admin URL is configured for this client, push this policy to that client.
|
||||||
|
select-a-format=Select a Format
|
||||||
|
download=Download
|
||||||
|
offline-tokens=Offline Tokens
|
||||||
|
offline-tokens.tooltip=Total number of offline tokens for this client.
|
||||||
|
show-offline-tokens=Show Offline Tokens
|
||||||
|
show-offline-tokens.tooltip=Warning, this is a potentially expensive operation depending on number of offline tokens.
|
||||||
|
token-issued=Token Issued
|
||||||
|
key-export=Key Export
|
||||||
|
key-import=Key Import
|
||||||
|
export-saml-key=Export SAML Key
|
||||||
|
import-saml-key=Import SAML Key
|
||||||
|
realm-certificate-alias=Realm Certificate Alias
|
||||||
|
realm-certificate-alias.tooltip=Realm certificate is stored in archive too. This is the alias to it.
|
||||||
|
signing-key=Signing Key
|
||||||
|
saml-signing-key=SAML Signing Key.
|
||||||
|
private-key=Private Key
|
||||||
|
generate-new-keys=Generate new keys
|
||||||
|
export=Export
|
||||||
|
encryption-key=Encryption Key
|
||||||
|
saml-encryption-key.tooltip=SAML Encryption Key.
|
||||||
|
service-accounts=Service Accounts
|
||||||
|
service-account.available-roles.tooltip=Realm level roles that can be assigned to service account.
|
||||||
|
service-account.assigned-roles.tooltip=Realm level roles assigned to service account.
|
||||||
|
service-account-is-not-enabled-for=Service account is not enabled for {{client}}
|
||||||
|
create-protocol-mappers=Create Protocol Mappers
|
||||||
|
create-protocol-mapper=Create Protocol Mapper
|
||||||
|
protocol=Protocol
|
||||||
|
protocol.tooltip=Protocol.
|
||||||
|
id=ID
|
||||||
|
mapper.name.tooltip=Name of the mapper.
|
||||||
|
mapper.consent-required.tooltip=When granting temporary access, must the user consent to providing this data to the client?
|
||||||
|
consent-text=Consent Text
|
||||||
|
consent-text.tooltip=Text to display on consent page.
|
||||||
|
mapper-type=Mapper Type
|
||||||
|
|
||||||
|
# realm identity providers
|
||||||
|
identity-providers=Identity Providers
|
||||||
|
table-of-identity-providers=Table of identity providers
|
||||||
|
add-provider.placeholder=Add provider...
|
||||||
|
provider=Provider
|
||||||
|
gui-order=GUI order
|
||||||
|
redirect-uri=Redirect URI
|
||||||
|
redirect-uri.tooltip=The redirect uri to use when configuring the identity provider.
|
||||||
|
alias=Alias
|
||||||
|
identity-provider.alias.tooltip=The alias uniquely identifies an identity provider and it is also used to build the redirect uri.
|
||||||
|
identity-provider.enabled.tooltip=Enable/disable this identity provider.
|
||||||
|
authenticate-by-default=Authenticate by Default
|
||||||
|
identity-provider.authenticate-by-default.tooltip=Indicates if this provider should be tried by default for authentication even before displaying login screen.
|
||||||
|
store-tokens=Store Tokens
|
||||||
|
identity-provider.store-tokens.tooltip=Enable/disable if tokens must be stored after authenticating users.
|
||||||
|
stored-tokens-readable=Stored Tokens Readable
|
||||||
|
identity-provider.stored-tokens-readable.tooltip=Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.
|
||||||
|
update-profile-on-first-login=Update Profile on First Login
|
||||||
|
on=On
|
||||||
|
on-missing-info=On missing info
|
||||||
|
off=Off
|
||||||
|
update-profile-on-first-login.tooltip=Define conditions under which a user has to update their profile during first-time login.
|
||||||
|
trust-email=Trust Email
|
||||||
|
trust-email.tooltip=If enabled then email provided by this provider is not verified even if verification is enabled for the realm.
|
||||||
|
gui-order.tooltip=Number defining order of the provider in GUI (eg. on Login page).
|
||||||
|
openid-connect-config=OpenID Connect Config
|
||||||
|
openid-connect-config.tooltip=OIDC SP and external IDP configuration.
|
||||||
|
authorization-url=Authorization URL
|
||||||
|
authorization-url.tooltip=The Authorization Url.
|
||||||
|
token-url=Token URL
|
||||||
|
token-url.tooltip=The Token URL.
|
||||||
|
logout-url=Logout URL
|
||||||
|
identity-provider.logout-url.tooltip=End session endpoint to use to logout user from external IDP.
|
||||||
|
backchannel-logout=Backchannel Logout
|
||||||
|
backchannel-logout.tooltip=Does the external IDP support backchannel logout?
|
||||||
|
user-info-url=User Info URL
|
||||||
|
user-info-url.tooltip=The User Info Url. This is optional.
|
||||||
|
identity-provider.client-id.tooltip=The client or client identifier registered within the identity provider.
|
||||||
|
client-secret=Client Secret
|
||||||
|
show-secret=Show secret
|
||||||
|
hide-secret=Hide secret
|
||||||
|
client-secret.tooltip=The client or client secret registered within the identity provider.
|
||||||
|
issuer=Issuer
|
||||||
|
issuer.tooltip=The issuer identifier for the issuer of the response. If not provided, no validation will be performed.
|
||||||
|
default-scopes=Default Scopes
|
||||||
|
identity-provider.default-scopes.tooltip=The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'.
|
||||||
|
prompt=Prompt
|
||||||
|
unspecified.option=unspecified
|
||||||
|
none.option=none
|
||||||
|
consent.option=consent
|
||||||
|
login.option=login
|
||||||
|
select-account.option=select_account
|
||||||
|
prompt.tooltip=Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.
|
||||||
|
validate-signatures=Validate Signatures
|
||||||
|
identity-provider.validate-signatures.tooltip=Enable/disable signature validation of external IDP signatures.
|
||||||
|
validating-public-key=Validating Public Key
|
||||||
|
identity-provider.validating-public-key.tooltip=The public key in PEM format that must be used to verify external IDP signatures.
|
||||||
|
import-external-idp-config=Import External IDP Config
|
||||||
|
import-external-idp-config.tooltip=Allows you to load external IDP metadata from a config file or to download it from a URL.
|
||||||
|
import-from-url=Import from URL
|
||||||
|
identity-provider.import-from-url.tooltip=Import metadata from a remote IDP discovery descriptor.
|
||||||
|
import-from-file=Import from file
|
||||||
|
identity-provider.import-from-file.tooltip=Import metadata from a downloaded IDP discovery descriptor.
|
||||||
|
saml-config=SAML Config
|
||||||
|
identity-provider.saml-config.tooltip=SAML SP and external IDP configuration.
|
||||||
|
single-signon-service-url=Single Sign-On Service URL
|
||||||
|
saml.single-signon-service-url.tooltip=The Url that must be used to send authentication requests (SAML AuthnRequest).
|
||||||
|
single-logout-service-url=Single Logout Service URL
|
||||||
|
saml.single-logout-service-url.tooltip=The Url that must be used to send logout requests.
|
||||||
|
nameid-policy-format=NameID Policy Format
|
||||||
|
nameid-policy-format.tooltip=Specifies the URI reference corresponding to a name identifier format. Defaults to urn:oasis:names:tc:SAML:2.0:nameid-format:persistent.
|
||||||
|
http-post-binding-response=HTTP-POST Binding Response
|
||||||
|
http-post-binding-response.tooltip=Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
|
||||||
|
http-post-binding-for-authn-request=HTTP-POST Binding for AuthnRequest
|
||||||
|
http-post-binding-for-authn-request.tooltip=Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
|
||||||
|
want-authn-requests-signed=Want AuthnRequests Signed
|
||||||
|
want-authn-requests-signed.tooltip=Indicates whether the identity provider expects signed a AuthnRequest.
|
||||||
|
force-authentication=Force Authentication
|
||||||
|
identity-provider.force-authentication.tooltip=Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.
|
||||||
|
validate-signature=Validate Signature
|
||||||
|
saml.validate-signature.tooltip=Enable/disable signature validation of SAML responses.
|
||||||
|
validating-x509-certificate=Validating X509 Certificate
|
||||||
|
validating-x509-certificate.tooltip=The certificate in PEM format that must be used to check for signatures.
|
||||||
|
saml.import-from-url.tooltip=Import metadata from a remote IDP SAML entity descriptor.
|
||||||
|
social.client-id.tooltip=The client identifier registered with the identity provider.
|
||||||
|
social.client-secret.tooltip=The client secret registered with the identity provider.
|
||||||
|
social.default-scopes.tooltip=The scopes to be sent when asking for authorization. See documentation for possible values, separator and default value'.
|
||||||
|
key=Key
|
||||||
|
stackoverflow.key.tooltip=The Key obtained from Stack Overflow client registration.
|
||||||
|
|
||||||
|
realms=Realms
|
||||||
|
realm=Realm
|
||||||
|
|
||||||
|
identity-provider-mappers=Identity Provider Mappers
|
||||||
|
create-identity-provider-mapper=Create Identity Provider Mapper
|
||||||
|
add-identity-provider-mapper=Add Identity Provider Mapper
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Cluster Nodes</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">{{:: 'cluster-nodes' | translate}}</a></li>
|
||||||
<li data-ng-show="create">Add Node</li>
|
<li data-ng-show="create">{{:: 'add-node' | translate}}</li>
|
||||||
<li data-ng-hide="create">{{node.host|capitalize}}</li>
|
<li data-ng-hide="create">{{node.host|capitalize}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1 data-ng-show="create">Add Node</h1>
|
<h1 data-ng-show="create">{{:: 'add-node' | translate}}</h1>
|
||||||
<h1 data-ng-hide="create">
|
<h1 data-ng-hide="create">
|
||||||
{{node.host|capitalize}}
|
{{node.host|capitalize}}
|
||||||
<i id="removeClient" class="pficon pficon-delete clickable" data-ng-show="access.manageClients" data-ng-click="unregisterNode()"></i>
|
<i id="removeClient" class="pficon pficon-delete clickable" data-ng-show="access.manageClients" data-ng-click="unregisterNode()"></i>
|
||||||
|
@ -21,14 +21,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="lastRegistration">Last Registration</label>
|
<label class="col-md-2 control-label" for="lastRegistration">{{:: 'last-registration' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-disabled="true" class="form-control" type="text" id="lastRegistration" name="lastRegistration" data-ng-model="node.lastRegistration">
|
<input ng-disabled="true" class="form-control" type="text" id="lastRegistration" name="lastRegistration" data-ng-model="node.lastRegistration">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||||
<button data-kc-save data-ng-show="create">Save</button>
|
<button data-kc-save data-ng-show="create">{{:: 'save' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<kc-tabs-client></kc-tabs-client>
|
<kc-tabs-client></kc-tabs-client>
|
||||||
|
|
||||||
<form class="form-horizontal" name="clusteringForm" novalidate kc-read-only="!access.manageClients">
|
<form class="form-horizontal" name="clusteringForm" novalidate kc-read-only="!access.manageClients">
|
||||||
<legend><span class="text">Basic configuration</span></legend>
|
<legend><span class="text">{{:: 'basic-configuration' | translate}}</span></legend>
|
||||||
<fieldset >
|
<fieldset >
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="nodeReRegistrationTimeout">Node Re-registration Timeout</label>
|
<label class="col-md-2 control-label" for="nodeReRegistrationTimeout">{{:: 'node-reregistration-timeout' | translate}}</label>
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6 form-inline">
|
<div class="col-md-6 form-inline">
|
||||||
|
@ -19,42 +19,42 @@
|
||||||
max="31536000" data-ng-model="client.nodeReRegistrationTimeout"
|
max="31536000" data-ng-model="client.nodeReRegistrationTimeout"
|
||||||
id="nodeReRegistrationTimeout" name="nodeReRegistrationTimeout"/>
|
id="nodeReRegistrationTimeout" name="nodeReRegistrationTimeout"/>
|
||||||
<select class="form-control" name="nodeReRegistrationTimeoutUnit" data-ng-model="client.nodeReRegistrationTimeoutUnit" >
|
<select class="form-control" name="nodeReRegistrationTimeoutUnit" data-ng-model="client.nodeReRegistrationTimeoutUnit" >
|
||||||
<option data-ng-selected="!client.nodeReRegistrationTimeoutUnit">Seconds</option>
|
<option data-ng-selected="!client.nodeReRegistrationTimeoutUnit">{{:: 'seconds' | translate}}</option>
|
||||||
<option>Minutes</option>
|
<option>{{:: 'minutes' | translate}}</option>
|
||||||
<option>Hours</option>
|
<option>{{:: 'hours' | translate}}</option>
|
||||||
<option>Days</option>
|
<option>{{:: 'days' | translate}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Interval to specify max time for registered clients cluster nodes to re-register. If cluster node won't send re-registration request to Keycloak within this time, it will be unregistered from Keycloak</kc-tooltip>
|
<kc-tooltip>{{:: 'node-reregistration-timeout.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||||
<button data-kc-save data-ng-disabled="!changed">Save</button>
|
<button data-kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button data-kc-reset data-ng-disabled="!changed">Cancel</button>
|
<button data-kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend><span class="text">Registered cluster nodes</span></legend>
|
<legend><span class="text">{{:: 'registered-cluster-nodes' | translate}}</span></legend>
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="kc-table-actions" colspan="5" data-ng-show="access.manageClients">
|
<th class="kc-table-actions" colspan="5" data-ng-show="access.manageClients">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<a class="btn btn-default" tooltip="Manually register cluster node. This is usually not needed as cluster node should be registered automatically by adapter"
|
<a class="btn btn-default" tooltip="Manually register cluster node. This is usually not needed as cluster node should be registered automatically by adapter"
|
||||||
tooltip-trigger="mouseover mouseout" tooltip-placement="bottom" href="#/register-node/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Register node manually</a>
|
tooltip-trigger="mouseover mouseout" tooltip-placement="bottom" href="#/register-node/realms/{{realm.realm}}/clients/{{client.id}}/clustering">{{:: 'register-node-manually' | translate}}</a>
|
||||||
<a class="btn btn-default" data-ng-click="testNodesAvailable()" data-ng-show="nodeRegistrations && nodeRegistrations.length > 0">Test cluster availability</a>
|
<a class="btn btn-default" data-ng-click="testNodesAvailable()" data-ng-show="nodeRegistrations && nodeRegistrations.length > 0">{{:: 'test-cluster-availability' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-hide="!nodeRegistrations || nodeRegistrations.length == 0">
|
<tr data-ng-hide="!nodeRegistrations || nodeRegistrations.length == 0">
|
||||||
<th>Node host</th>
|
<th>{{:: 'node-host' | translate}}</th>
|
||||||
<th>Last registration</th>
|
<th>{{:: 'last-registration' | translate}}</th>
|
||||||
<th colspan="2">Actions</th>
|
<th colspan="2">{{:: 'actions' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -62,14 +62,14 @@
|
||||||
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering/{{node.host}}">{{node.host}}</a></td>
|
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering/{{node.host}}">{{node.host}}</a></td>
|
||||||
<td>{{node.lastRegistration}}</td>
|
<td>{{node.lastRegistration}}</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}/clustering/{{node.host}}">Edit</button>
|
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}/clustering/{{node.host}}">{{:: 'edit' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeNode(node)">Delete</button>
|
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeNode(node)">{{:: 'delete' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="!nodeRegistrations || nodeRegistrations.length == 0">
|
<tr data-ng-show="!nodeRegistrations || nodeRegistrations.length == 0">
|
||||||
<td class="text-muted">No registered cluster nodes available</td>
|
<td class="text-muted">{{:: 'no-registered-cluster-nodes' | translate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">Credentials</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">{{:: 'credentials' | translate}}</a></li>
|
||||||
<li class="active">Generate Client Private Key</li>
|
<li class="active">{{:: 'gen-client-private-key' | translate}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1>Generate Private Key</h1>
|
<h1>{{:: 'generate-private-key' | translate}}</h1>
|
||||||
|
|
||||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset class="form-group col-sm-10">
|
<fieldset class="form-group col-sm-10">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
<label class="col-md-2 control-label" for="downloadKeyFormat">{{:: 'archive-format' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="downloadKeyFormat"
|
<select class="form-control" id="downloadKeyFormat"
|
||||||
|
@ -21,33 +21,33 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
<kc-tooltip>{{:: 'archive-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="keyAlias">Key Alias</label>
|
<label class="col-md-2 control-label" for="keyAlias">{{:: 'key-alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="keyAlias" name="keyAlias" data-ng-model="jks.keyAlias" autofocus required>
|
<input class="form-control" type="text" id="keyAlias" name="keyAlias" data-ng-model="jks.keyAlias" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Archive alias for your private key and certificate.</kc-tooltip>
|
<kc-tooltip>{{:: 'key-alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="keyPassword">Key Password</label>
|
<label class="col-md-2 control-label" for="keyPassword">{{:: 'key-password' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="password" id="keyPassword" name="keyPassword" data-ng-model="jks.keyPassword" autofocus required>
|
<input class="form-control" type="password" id="keyPassword" name="keyPassword" data-ng-model="jks.keyPassword" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Password to access the private key in the archive</kc-tooltip>
|
<kc-tooltip>{{:: 'key-password.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storePassword">Store Password</label>
|
<label class="col-md-2 control-label" for="storePassword">{{:: 'store-password' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="password" id="storePassword" name="storePassword" data-ng-model="jks.storePassword" autofocus required>
|
<input class="form-control" type="password" id="storePassword" name="storePassword" data-ng-model="jks.storePassword" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
<kc-tooltip>{{:: 'store-password.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||||
<button class="btn btn-primary" type="submit" data-ng-click="download()">Generate and Download</button>
|
<button class="btn btn-primary" type="submit" data-ng-click="download()">{{:: 'generate-and-download' | translate}}</button>
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="cancel()">Cancel</button>
|
<button class="btn btn-default" type="submit" data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">Credentials</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">{{:: 'credentials' | translate}}</a></li>
|
||||||
<li class="active">Client Certificate Import</li>
|
<li class="active">{{:: 'client-certificate-import' | translate}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1>Import Client Certificate</h1>
|
<h1>{{:: 'import-client-certificate' | translate}}</h1>
|
||||||
|
|
||||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
<label class="col-md-2 control-label" for="uploadKeyFormat">{{:: 'archive-format' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="uploadKeyFormat"
|
<select class="form-control" id="uploadKeyFormat"
|
||||||
|
@ -21,27 +21,27 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
<kc-tooltip>{{:: 'archive-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
<label class="col-md-2 control-label" for="uploadKeyAlias">{{:: 'key-alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Archive alias for your certificate.</kc-tooltip>
|
<kc-tooltip>{{:: 'jwt-import.key-alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="uploadStorePassword">Store Password</label>
|
<label class="col-md-2 control-label" for="uploadStorePassword">{{:: 'store-password' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
<kc-tooltip>{{:: 'store-password.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label">Import File </label>
|
<label class="col-md-2 control-label">{{:: 'import-file' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
<label for="import-file" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||||
</div>
|
</div>
|
||||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||||
|
@ -51,8 +51,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2">
|
<div class="col-md-10 col-md-offset-2">
|
||||||
<button type="submit" data-ng-click="uploadFile()" data-ng-disabled="files.length == 0" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="uploadFile()" data-ng-disabled="files.length == 0" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
<button type="submit" data-ng-click="cancel()" class="btn btn-default">Cancel</button>
|
<button type="submit" data-ng-click="cancel()" class="btn btn-default">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
<div>
|
<div>
|
||||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageClients" data-ng-controller="ClientSignedJWTCtrl">
|
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageClients" data-ng-controller="ClientSignedJWTCtrl">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="signingCert">Certificate</label>
|
<label class="col-md-2 control-label" for="signingCert">{{:: 'certificate' | translate}}</label>
|
||||||
<kc-tooltip>Client Certificate for validate JWT issued by client and signed by Client private key from your keystore.</kc-tooltip>
|
<kc-tooltip>{{:: 'certificate.tooltip' | translate}}</kc-tooltip>
|
||||||
|
|
||||||
<div class="col-sm-10" data-ng-show="signingKeyInfo.certificate">
|
<div class="col-sm-10" data-ng-show="signingKeyInfo.certificate">
|
||||||
<textarea type="text" id="signingCert" name="signingCert" class="form-control" rows="5" kc-select-action="click" readonly>{{signingKeyInfo.certificate}}</textarea>
|
<textarea type="text" id="signingCert" name="signingCert" class="form-control" rows="5" kc-select-action="click" readonly>{{signingKeyInfo.certificate}}</textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-10" data-ng-hide="signingKeyInfo.certificate">
|
<div class="col-sm-10" data-ng-hide="signingKeyInfo.certificate">
|
||||||
No client certificate configured
|
{{:: 'no-client-certificate-configured' | translate}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="generateSigningKey()">Generate new keys and certificate</button>
|
<button class="btn btn-default" type="submit" data-ng-click="generateSigningKey()">{{:: 'gen-new-keys-and-cert' | translate}}</button>
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="importCertificate()">Import certificate</button>
|
<button class="btn btn-default" type="submit" data-ng-click="importCertificate()">{{:: 'import-certificate' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<div>
|
<div>
|
||||||
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageClients" data-ng-controller="ClientSecretCtrl">
|
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageClients" data-ng-controller="ClientSecretCtrl">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="secret">Secret</label>
|
<label class="col-md-2 control-label" for="secret">{{:: 'secret' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input readonly kc-select-action="click" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret">
|
<input readonly kc-select-action="click" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6" data-ng-show="access.manageClients">
|
<div class="col-sm-6" data-ng-show="access.manageClients">
|
||||||
<button type="submit" data-ng-click="changePassword()" class="btn btn-default">Regenerate Secret</button>
|
<button type="submit" data-ng-click="changePassword()" class="btn btn-default">{{:: 'regenerate-secret' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageClients">
|
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageClients">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="clientAuthenticatorType"> Client Authenticator</label>
|
<label class="col-md-2 control-label" for="clientAuthenticatorType"> {{:: 'client-authenticator' | translate}}</label>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="clientAuthenticatorType"
|
<select class="form-control" id="clientAuthenticatorType"
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Client Authenticator used for authentication this client against Keycloak server</kc-tooltip>
|
<kc-tooltip>{{:: 'client-authenticator.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li data-ng-show="create">Add Client</li>
|
<li data-ng-show="create">{{:: 'add-client' | translate}}</li>
|
||||||
<li data-ng-hide="create">{{client.clientId}}</li>
|
<li data-ng-hide="create">{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -11,56 +11,56 @@
|
||||||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageClients">
|
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageClients">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group" data-ng-show="create">
|
<div class="form-group" data-ng-show="create">
|
||||||
<label for="name" class="col-sm-2 control-label">Import</label>
|
<label for="name" class="col-sm-2 control-label">{{:: 'import' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-md-6" data-ng-hide="importing">
|
<div class="col-md-6" data-ng-hide="importing">
|
||||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
<label for="import-file" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||||
<input id="import-file" type="file" class="hidden" kc-on-read-file="importFile($fileContent)">
|
<input id="import-file" type="file" class="hidden" kc-on-read-file="importFile($fileContent)">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6" data-ng-show="importing">
|
<div class="col-md-6" data-ng-show="importing">
|
||||||
<button class="btn btn-default" data-ng-click="viewImportDetails()">View details</button>
|
<button class="btn btn-default" data-ng-click="viewImportDetails()">{{:: 'view-details' | translate}}</button>
|
||||||
<button class="btn btn-default" data-ng-click="reset()">Clear import</button>
|
<button class="btn btn-default" data-ng-click="reset()">{{:: 'clear-import' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="clientId">Client ID <span class="required" data-ng-show="create">*</span></label>
|
<label class="col-md-2 control-label" for="clientId">{{:: 'client-id' | translate}} <span class="required" data-ng-show="create">*</span></label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" id="clientId" name="clientId" data-ng-model="client.clientId" autofocus required>
|
<input class="form-control" type="text" id="clientId" name="clientId" data-ng-model="client.clientId" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Specifies ID referenced in URI and tokens. For example 'my-client'</kc-tooltip>
|
<kc-tooltip>{{:: 'client-id.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="name">Name </label>
|
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} </label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="client.name" autofocus>
|
<input class="form-control" type="text" id="name" name="name" data-ng-model="client.name" autofocus>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}</kc-tooltip>
|
<kc-tooltip>{{:: 'client.name.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
<label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.enabled" name="enabled" id="enabled" onoffswitch />
|
<input ng-model="client.enabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Disabled clients cannot initiate a login or have obtain access tokens.</kc-tooltip>
|
<kc-tooltip>{{:: 'client.enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<label class="col-md-2 control-label" for="consentRequired">Consent Required</label>
|
<label class="col-md-2 control-label" for="consentRequired">{{:: 'consent-required' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.consentRequired" name="consentRequired" id="consentRequired" onoffswitch />
|
<input ng-model="client.consentRequired" name="consentRequired" id="consentRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>If enabled users have to consent to client access.</kc-tooltip>
|
<kc-tooltip>{{:: 'consent-required.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<label class="col-md-2 control-label" for="directGrantsOnly">Direct Grants Only</label>
|
<label class="col-md-2 control-label" for="directGrantsOnly">{{:: 'direct-grants-only' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch />
|
<input ng-model="client.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>When enabled, client can only obtain grants from grant REST API.</kc-tooltip>
|
<kc-tooltip>{{:: 'direct-grants-only.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="protocol">Client Protocol</label>
|
<label class="col-md-2 control-label" for="protocol">{{:: 'client-protocol' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="protocol"
|
<select class="form-control" id="protocol"
|
||||||
|
@ -70,11 +70,10 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>'OpenID connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.
|
<kc-tooltip>{{:: 'client-protocol.tooltip' | translate}}</kc-tooltip>
|
||||||
'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.</kc-tooltip>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'openid-connect'">
|
<div class="form-group" data-ng-show="protocol == 'openid-connect'">
|
||||||
<label class="col-md-2 control-label" for="accessType">Access Type</label>
|
<label class="col-md-2 control-label" for="accessType">{{:: 'access-type' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="accessType"
|
<select class="form-control" id="accessType"
|
||||||
|
@ -84,38 +83,38 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>'Confidential' clients require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' clients are web services that never initiate a login.</kc-tooltip>
|
<kc-tooltip>{{:: 'access-type.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.publicClient && !client.bearerOnly">
|
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.publicClient && !client.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="serviceAccountsEnabled">Service Accounts Enabled</label>
|
<label class="col-md-2 control-label" for="serviceAccountsEnabled">{{:: 'service-accounts-enabled' | translate}}</label>
|
||||||
<kc-tooltip>Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client.</kc-tooltip>
|
<kc-tooltip>{{:: 'service-accounts-enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.serviceAccountsEnabled" name="serviceAccountsEnabled" id="serviceAccountsEnabled" onoffswitch />
|
<input ng-model="client.serviceAccountsEnabled" name="serviceAccountsEnabled" id="serviceAccountsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlServerSignature">Include AuthnStatement</label>
|
<label class="col-md-2 control-label" for="samlServerSignature">{{:: 'include-authnstatement' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlAuthnStatement" ng-click="switchChange()" name="samlAuthnStatement" id="samlAuthnStatement" onoffswitch />
|
<input ng-model="samlAuthnStatement" ng-click="switchChange()" name="samlAuthnStatement" id="samlAuthnStatement" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Should a statement specifying the method and timestamp be included in login responses?</kc-tooltip>
|
<kc-tooltip>{{:: 'include-authnstatement.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlServerSignature">Sign Documents</label>
|
<label class="col-md-2 control-label" for="samlServerSignature">{{:: 'sign-documents' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlServerSignature" ng-click="switchChange()" name="samlServerSignature" id="samlServerSignature" onoffswitch />
|
<input ng-model="samlServerSignature" ng-click="switchChange()" name="samlServerSignature" id="samlServerSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Should SAML documents be signed by the realm?</kc-tooltip>
|
<kc-tooltip>{{:: 'sign-documents.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlAssertionSignature">Sign Assertions</label>
|
<label class="col-md-2 control-label" for="samlAssertionSignature">{{:: 'sign-assertions' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlAssertionSignature" ng-click="switchChange()" name="samlAssertionSignature" id="samlAssertionSignature" onoffswitch />
|
<input ng-model="samlAssertionSignature" ng-click="switchChange()" name="samlAssertionSignature" id="samlAssertionSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Should assertions inside SAML documents be signed? This setting isn't needed if document is already being signed.</kc-tooltip>
|
<kc-tooltip>{{:: 'sign-assertions.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
|
<div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="signatureAlgorithm">Signature Algorithm</label>
|
<label class="col-md-2 control-label" for="signatureAlgorithm">{{:: 'signature-algorithm' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="signatureAlgorithm"
|
<select class="form-control" id="signatureAlgorithm"
|
||||||
|
@ -125,10 +124,10 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The signature algorithm to use to sign documents.</kc-tooltip>
|
<kc-tooltip>{{:: 'signature-algorithm.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
|
<div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="canonicalization">Canonicalization Method</label>
|
<label class="col-md-2 control-label" for="canonicalization">{{:: 'canonicalization-method' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="canonicalization"
|
<select class="form-control" id="canonicalization"
|
||||||
|
@ -137,45 +136,45 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Canonicalization Method for XML signatures.</kc-tooltip>
|
<kc-tooltip>{{:: 'canonicalization-method.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlEncrypt">Encrypt Assertions</label>
|
<label class="col-md-2 control-label" for="samlEncrypt">{{:: 'encrypt-assertions' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlEncrypt" ng-click="switchChange()" name="samlEncrypt" id="samlEncrypt" onoffswitch />
|
<input ng-model="samlEncrypt" ng-click="switchChange()" name="samlEncrypt" id="samlEncrypt" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Should SAML assertions be encrypted with client's public key using AES?</kc-tooltip>
|
<kc-tooltip>{{:: 'encrypt-assertions.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlClientSignature">Client Signature Required</label>
|
<label class="col-md-2 control-label" for="samlClientSignature">{{:: 'client-signature-required' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlClientSignature" ng-click="switchChange()" name="samlClientSignature" id="samlClientSignature" onoffswitch />
|
<input ng-model="samlClientSignature" ng-click="switchChange()" name="samlClientSignature" id="samlClientSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Will the client sign their saml requests and responses? And should they be validated?</kc-tooltip>
|
<kc-tooltip>{{:: 'client-signature-required.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlForcePostBinding">Force POST Binding</label>
|
<label class="col-md-2 control-label" for="samlForcePostBinding">{{:: 'force-post-binding' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlForcePostBinding" ng-click="switchChange()" name="samlForcePostBinding" id="samlForcePostBinding" onoffswitch />
|
<input ng-model="samlForcePostBinding" ng-click="switchChange()" name="samlForcePostBinding" id="samlForcePostBinding" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Always use POST binding for responses.</kc-tooltip>
|
<kc-tooltip>{{:: 'force-post-binding.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="frontchannelLogout">Front Channel Logout</label>
|
<label class="col-md-2 control-label" for="frontchannelLogout">{{:: 'front-channel-logout' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.frontchannelLogout" name="frontchannelLogout" id="frontchannelLogout" onoffswitch />
|
<input ng-model="client.frontchannelLogout" name="frontchannelLogout" id="frontchannelLogout" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.</kc-tooltip>
|
<kc-tooltip>{{:: 'front-channel-logout.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlForceNameIdFormat">Force Name ID Format</label>
|
<label class="col-md-2 control-label" for="samlForceNameIdFormat">{{:: 'force-name-id-format' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="samlForceNameIdFormat" ng-click="switchChange()" name="samlForceNameIdFormat" id="samlForceNameIdFormat" onoffswitch />
|
<input ng-model="samlForceNameIdFormat" ng-click="switchChange()" name="samlForceNameIdFormat" id="samlForceNameIdFormat" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Ignore requested NameID subject format and use admin console configured one.</kc-tooltip>
|
<kc-tooltip>{{:: 'force-name-id-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'saml'">
|
<div class="form-group" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="samlNameIdFormat">Name ID Format</label>
|
<label class="col-md-2 control-label" for="samlNameIdFormat">{{:: 'name-id-format' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="samlNameIdFormat"
|
<select class="form-control" id="samlNameIdFormat"
|
||||||
|
@ -185,19 +184,19 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The name ID format to use for the subject.</kc-tooltip>
|
<kc-tooltip>{{:: 'name-id-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" data-ng-show="!client.bearerOnly">
|
<div class="form-group" data-ng-show="!client.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="rootUrl">Root URL</label>
|
<label class="col-md-2 control-label" for="rootUrl">{{:: 'root-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="rootUrl" id="rootUrl" data-ng-model="client.rootUrl">
|
<input class="form-control" type="text" name="rootUrl" id="rootUrl" data-ng-model="client.rootUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Root URL appended to relative URLs</kc-tooltip>
|
<kc-tooltip>{{:: 'root-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group clearfix block" data-ng-hide="client.bearerOnly || client.directGrantsOnly">
|
<div class="form-group clearfix block" data-ng-hide="client.bearerOnly || client.directGrantsOnly">
|
||||||
<label class="col-md-2 control-label" for="newRedirectUri"><span class="required" data-ng-show="protocol != 'saml'">*</span> Valid Redirect URIs</label>
|
<label class="col-md-2 control-label" for="newRedirectUri"><span class="required" data-ng-show="protocol != 'saml'">*</span> {{:: 'valid-redirect-uris' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="input-group" ng-repeat="(i, redirectUri) in client.redirectUris track by $index">
|
<div class="input-group" ng-repeat="(i, redirectUri) in client.redirectUris track by $index">
|
||||||
|
@ -215,48 +214,48 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<kc-tooltip>Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.</kc-tooltip>
|
<kc-tooltip>{{:: 'valid-redirect-uris.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" data-ng-show="!client.bearerOnly && !create">
|
<div class="form-group" data-ng-show="!client.bearerOnly && !create">
|
||||||
<label class="col-md-2 control-label" for="baseUrl">Base URL</label>
|
<label class="col-md-2 control-label" for="baseUrl">{{:: 'base-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="baseUrl" id="baseUrl" data-ng-model="client.baseUrl">
|
<input class="form-control" type="text" name="baseUrl" id="baseUrl" data-ng-model="client.baseUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Default URL to use when the auth server needs to redirect or link back to the client.</kc-tooltip>
|
<kc-tooltip>{{:: 'base-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="create || protocol == 'saml'">
|
<div class="form-group" data-ng-hide="create || protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="adminUrl">Admin URL</label>
|
<label class="col-md-2 control-label" for="adminUrl">{{:: 'admin-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
||||||
data-ng-model="client.adminUrl">
|
data-ng-model="client.adminUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other adminstrative tasks. Usually this is set to the base URL of the client.</kc-tooltip>
|
<kc-tooltip>{{:: 'admin-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'saml'">
|
<div class="form-group" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="masterSamlUrl">Master SAML Processing URL</label>
|
<label class="col-md-2 control-label" for="masterSamlUrl">{{:: 'master-saml-processing-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
|
<input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
|
||||||
data-ng-model="client.adminUrl">
|
data-ng-model="client.adminUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overiden for each binding and service in the Fine Grain SAML Endpoint Configuration.</kc-tooltip>
|
<kc-tooltip>{{:: 'master-saml-processing-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="urlReferenceName">IDP Initiated SSO URL Name</label>
|
<label class="col-md-2 control-label" for="urlReferenceName">{{:: 'idp-sso-url-ref' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_idp_initiated_sso_url_name" class="form-control" type="text" name="urlReferenceName" id="urlReferenceName" />
|
<input ng-model="client.attributes.saml_idp_initiated_sso_url_name" class="form-control" type="text" name="urlReferenceName" id="urlReferenceName" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>URL fragment name to reference client when you want to do IDP Initiated SSO. Leaving this empty will disable IDP Initiated SSO. The URL you will reference from your browser will be: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}</kc-tooltip>
|
<kc-tooltip>{{:: 'idp-sso-url-ref.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="idpInitiatedRelayState">IDP Initiated SSO Relay State</label>
|
<label class="col-md-2 control-label" for="idpInitiatedRelayState">{{:: 'idp-sso-relay-state' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_idp_initiated_sso_relay_state" class="form-control" type="text" name="idpInitiatedRelayState" id="idpInitiatedRelayState" />
|
<input ng-model="client.attributes.saml_idp_initiated_sso_relay_state" class="form-control" type="text" name="idpInitiatedRelayState" id="idpInitiatedRelayState" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Relay state you want to send with SAML request when you want to do IDP Initiated SSO.</kc-tooltip>
|
<kc-tooltip>{{:: 'idp-sso-relay-state.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="!client.bearerOnly && !create && protocol == 'openid-connect'">
|
<div class="form-group" data-ng-show="!client.bearerOnly && !create && protocol == 'openid-connect'">
|
||||||
<label class="col-md-2 control-label" for="newWebOrigin">Web Origins</label>
|
<label class="col-md-2 control-label" for="newWebOrigin">{{:: 'web-origins' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="input-group" ng-repeat="(i, webOrigin) in client.webOrigins track by $index">
|
<div class="input-group" ng-repeat="(i, webOrigin) in client.webOrigins track by $index">
|
||||||
|
@ -274,49 +273,49 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<kc-tooltip>Allowed CORS origins. To permit all origins of Valid Redirect URIs add '+'. To permit all origins add '*'.</kc-tooltip>
|
<kc-tooltip>{{:: 'web-origins.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset data-ng-show="protocol == 'saml'">
|
<fieldset data-ng-show="protocol == 'saml'">
|
||||||
<legend collapsed><span class="text">Fine Grain SAML Endpoint Configuration</span> <kc-tooltip>Expand this section to configure exact URLs for Assertion Consumer and Single Logout Service.</kc-tooltip></legend>
|
<legend collapsed><span class="text">{{:: 'fine-saml-endpoint-conf' | translate}}</span> <kc-tooltip>{{:: 'fine-saml-endpoint-conf.tooltip' | translate}}</kc-tooltip></legend>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="consumerServicePost">Assertion Consumer Service POST Binding URL</label>
|
<label class="col-md-2 control-label" for="consumerServicePost">{{:: 'assertion-consumer-post-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_assertion_consumer_url_post" class="form-control" type="text" name="consumerServicePost" id="consumerServicePost" />
|
<input ng-model="client.attributes.saml_assertion_consumer_url_post" class="form-control" type="text" name="consumerServicePost" id="consumerServicePost" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.</kc-tooltip>
|
<kc-tooltip>{{:: 'assertion-consumer-post-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="consumerServiceRedirect">Assertion Consumer Service Redirect Binding URL</label>
|
<label class="col-md-2 control-label" for="consumerServiceRedirect">{{:: 'assertion-consumer-redirect-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_assertion_consumer_url_redirect" class="form-control" type="text" name="consumerServiceRedirect" id="consumerServiceRedirect" />
|
<input ng-model="client.attributes.saml_assertion_consumer_url_redirect" class="form-control" type="text" name="consumerServiceRedirect" id="consumerServiceRedirect" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.</kc-tooltip>
|
<kc-tooltip>{{:: 'assertion-consumer-redirect-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="logoutPostBinding">Logout Service POST Binding URL</label>
|
<label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-post-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_single_logout_service_url_post" class="form-control" type="text" name="logoutPostBinding" id="logoutPostBinding" />
|
<input ng-model="client.attributes.saml_single_logout_service_url_post" class="form-control" type="text" name="logoutPostBinding" id="logoutPostBinding" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding</kc-tooltip>
|
<kc-tooltip>{{:: 'logout-service-post-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="logoutPostBinding">Logout Service Redirect Binding URL</label>
|
<label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-redir-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_single_logout_service_url_redirect" class="form-control" type="text" name="logoutRedirectBinding" id="logoutRedirectBinding" />
|
<input ng-model="client.attributes.saml_single_logout_service_url_redirect" class="form-control" type="text" name="logoutRedirectBinding" id="logoutRedirectBinding" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.</kc-tooltip>
|
<kc-tooltip>{{:: 'logout-service-redir-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageClients">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageClients">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>Import Client</li>
|
<li>{{:: 'import-client' | translate}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1>Import Client</h1>
|
<h1>{{:: 'import-client' | translate}}</h1>
|
||||||
|
|
||||||
<form class="form-horizontal" name="realmForm" novalidate>
|
<form class="form-horizontal" name="realmForm" novalidate>
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
<label class="col-md-2 control-label" for="configFormats">Format Option</label>
|
<label class="col-md-2 control-label" for="configFormats">{{:: 'format-option' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="configFormats" name="configFormats" ng-model="configFormat" ng-options="format.name for format in configFormats">
|
<select class="form-control" id="configFormats" name="configFormats" ng-model="configFormat" ng-options="format.name for format in configFormats">
|
||||||
<option value="" selected> Select a Format </option>
|
<option value="" selected> {{:: 'select-format' | translate}} </option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label">Import File </label>
|
<label class="col-md-2 control-label">{{:: 'import-file' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
<label for="import-file" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||||
</div>
|
</div>
|
||||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||||
|
@ -35,8 +35,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="files.length > 0">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="files.length > 0">
|
||||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">Cancel</button>
|
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -10,12 +10,12 @@
|
||||||
<form class="form" name="realmForm" novalidate>
|
<form class="form" name="realmForm" novalidate>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
<label class="col-md-1 control-label" for="configFormats">Format Option</label>
|
<label class="col-md-1 control-label" for="configFormats">{{:: 'format-option' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="configFormats" name="configFormats" ng-change="changeFormat()" ng-model="configFormat" ng-options="a for a in configFormats">
|
<select class="form-control" id="configFormats" name="configFormats" ng-change="changeFormat()" ng-model="configFormat" ng-options="a for a in configFormats">
|
||||||
<option value="" selected> Select a Format </option>
|
<option value="" selected> {{:: 'select-a-format' | translate}} </option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
<fieldset class="margin-top">
|
<fieldset class="margin-top">
|
||||||
<div class="form-group" ng-show="installation">
|
<div class="form-group" ng-show="installation">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit" ng-show="installation">Download</a>
|
<a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit" ng-show="installation">{{:: 'download' | translate}}</a>
|
||||||
<textarea class="form-control" rows="20" kc-select-action="click">{{installation}}</textarea>
|
<textarea class="form-control" rows="20" kc-select-action="click">{{installation}}</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
<h1>
|
<h1>
|
||||||
<span>Clients</span>
|
<span>{{:: 'clients' | translate}}</span>
|
||||||
<kc-tooltip>Clients are trusted browser apps and web services in a realm. These clients can request a login. You can also define client specific roles.</kc-tooltip>
|
<kc-tooltip>{{:: 'clients.tooltip' | translate}}</kc-tooltip>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
<div class="form-inline">
|
<div class="form-inline">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" placeholder="Search..." data-ng-model="search.clientId" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="search.clientId" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||||
<div class="input-group-addon">
|
<div class="input-group-addon">
|
||||||
<i class="fa fa-search" type="submit"></i>
|
<i class="fa fa-search" type="submit"></i>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,37 +19,37 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="pull-right" data-ng-show="access.manageClients">
|
<div class="pull-right" data-ng-show="access.manageClients">
|
||||||
<a id="createClient" class="btn btn-default" href="#/create/client/{{realm.realm}}">Create</a>
|
<a id="createClient" class="btn btn-default" href="#/create/client/{{realm.realm}}">{{:: 'create' | translate}}</a>
|
||||||
<a id="importClient" class="btn btn-default" href="#/import/client/{{realm.realm}}" data-ng-show="importButton">Import</a>
|
<a id="importClient" class="btn btn-default" href="#/import/client/{{realm.realm}}" data-ng-show="importButton">{{:: 'import' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-hide="clients.length == 0">
|
<tr data-ng-hide="clients.length == 0">
|
||||||
<th>Client ID</th>
|
<th>{{:: 'client-id' | translate}}</th>
|
||||||
<th>Enabled</th>
|
<th>{{:: 'enabled' | translate}}</th>
|
||||||
<th>Base URL</th>
|
<th>{{:: 'base-url' | translate}}</th>
|
||||||
<th colspan="2">Actions</th>
|
<th colspan="2">{{:: 'actions' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr ng-repeat="client in clients | filter:search | orderBy:'clientId'">
|
<tr ng-repeat="client in clients | filter:search | orderBy:'clientId'">
|
||||||
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></td>
|
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></td>
|
||||||
<td>{{client.enabled}}</td>
|
<td translate="{{client.enabled}}"></td>
|
||||||
<td ng-class="{'text-muted': !client.baseUrl}">
|
<td ng-class="{'text-muted': !client.baseUrl}">
|
||||||
<a href="{{client.rootUrl}}{{client.baseUrl}}" target="_blank" data-ng-show="client.baseUrl">{{client.rootUrl}}{{client.baseUrl}}</a>
|
<a href="{{client.rootUrl}}{{client.baseUrl}}" target="_blank" data-ng-show="client.baseUrl">{{client.rootUrl}}{{client.baseUrl}}</a>
|
||||||
<span data-ng-hide="client.baseUrl">Not defined</span>
|
<span data-ng-hide="client.baseUrl">{{:: 'not-defined' | translate}}</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}">Edit</button>
|
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}">{{:: 'edit' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeClient(client)">Delete</button>
|
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeClient(client)">{{:: 'delete' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="(clients | filter:search).length == 0">
|
<tr data-ng-show="(clients | filter:search).length == 0">
|
||||||
<td class="text-muted" colspan="3" data-ng-show="search.clientId">No results</td>
|
<td class="text-muted" colspan="3" data-ng-show="search.clientId">{{:: 'no-results' | translate}}</td>
|
||||||
<td class="text-muted" colspan="3" data-ng-hide="search.clientId">No clients available</td>
|
<td class="text-muted" colspan="3" data-ng-hide="search.clientId">{{:: 'no-clients-available' | translate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">{{:: 'mappers' | translate}}</a></li>
|
||||||
<li class="active">Add Builtin Protocol Mappers</li>
|
<li class="active">{{:: 'add-builtin-protocol-mappers' | translate}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1>Add Builtin Protocol Mapper</h1>
|
<h1>{{:: 'add-builtin-protocol-mapper' | translate}}</h1>
|
||||||
|
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
<div class="form-inline">
|
<div class="form-inline">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||||
<div class="input-group-addon">
|
<div class="input-group-addon">
|
||||||
<i class="fa fa-search" type="submit"></i>
|
<i class="fa fa-search" type="submit"></i>
|
||||||
</div>
|
</div>
|
||||||
|
@ -26,10 +26,10 @@
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-hide="mappers.length == 0">
|
<tr data-ng-hide="mappers.length == 0">
|
||||||
<th>Name</th>
|
<th>{{:: 'name' | translate}}</th>
|
||||||
<th>Category</th>
|
<th>{{:: 'category' | translate}}</th>
|
||||||
<th>Type</th>
|
<th>{{:: 'type' | translate}}</th>
|
||||||
<th>Add</th>
|
<th>{{:: 'add' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -40,13 +40,13 @@
|
||||||
<td><input type="checkbox" ng-model="mapper.isChecked"></td>
|
<td><input type="checkbox" ng-model="mapper.isChecked"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="mappers.length == 0">
|
<tr data-ng-show="mappers.length == 0">
|
||||||
<td>No mappers available</td>
|
<td>{{:: 'no-mappers-available' | translate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div data-ng-show="access.manageRealm">
|
<div data-ng-show="access.manageRealm">
|
||||||
<button class="btn btn-primary" data-ng-click="add()">Add Selected</button>
|
<button class="btn btn-primary" data-ng-click="add()">{{:: 'add-selected' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<div class="form-inline">
|
<div class="form-inline">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||||
<div class="input-group-addon">
|
<div class="input-group-addon">
|
||||||
<i class="fa fa-search" type="submit"></i>
|
<i class="fa fa-search" type="submit"></i>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,17 +22,17 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="pull-right" data-ng-show="access.manageClients">
|
<div class="pull-right" data-ng-show="access.manageClients">
|
||||||
<a class="btn btn-default" href="#/create/client/{{realm.realm}}/{{client.id}}/mappers">Create</a>
|
<a class="btn btn-default" href="#/create/client/{{realm.realm}}/{{client.id}}/mappers">{{:: 'create' | translate}}</a>
|
||||||
<a class="btn btn-default" href="#/realms/{{realm.realm}}/clients/{{client.id}}/add-mappers">Add Builtin</a>
|
<a class="btn btn-default" href="#/realms/{{realm.realm}}/clients/{{client.id}}/add-mappers">{{:: 'add-builtin' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-hide="mappers.length == 0">
|
<tr data-ng-hide="mappers.length == 0">
|
||||||
<th>Name</th>
|
<th>{{:: 'name' | translate}}</th>
|
||||||
<th>Category</th>
|
<th>{{:: 'category' | translate}}</th>
|
||||||
<th>Type</th>
|
<th>{{:: 'type' | translate}}</th>
|
||||||
<th colspan="2">Actions</th>
|
<th colspan="2">{{:: 'actions' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -41,14 +41,14 @@
|
||||||
<td>{{mapperTypes[mapper.protocolMapper].category}}</td>
|
<td>{{mapperTypes[mapper.protocolMapper].category}}</td>
|
||||||
<td>{{mapperTypes[mapper.protocolMapper].name}}</td>
|
<td>{{mapperTypes[mapper.protocolMapper].name}}</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}/mappers/{{mapper.id}}">Edit</button>
|
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}/mappers/{{mapper.id}}">{{:: 'edit' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeMapper(mapper)">Delete</button>
|
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeMapper(mapper)">{{:: 'delete' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="mappers.length == 0">
|
<tr data-ng-show="mappers.length == 0">
|
||||||
<td>No mappers available</td>
|
<td>{{:: 'no-mappers-available' | translate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@
|
||||||
<form class="form-horizontal" name="sessionStats">
|
<form class="form-horizontal" name="sessionStats">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="activeSessions">Offline Tokens</label>
|
<label class="col-md-2 control-label" for="activeSessions">{{:: 'offline-tokens' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Total number of offline tokens for this client.</kc-tooltip>
|
<kc-tooltip>{{:: 'offline-tokens.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
@ -23,23 +23,23 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th class="kc-table-actions" colspan="3">
|
<th class="kc-table-actions" colspan="3">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<a class="btn btn-default" ng-click="loadUsers()" tooltip-placement="left" tooltip-trigger="mouseover mouseout" tooltip="Warning, this is a potentially expensive operation depending on number of offline tokens.">Show Offline Tokens</a>
|
<a class="btn btn-default" ng-click="loadUsers()" tooltip-placement="left" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'show-offline-tokens.tooltip' | translate}}">{{:: 'show-offline-tokens' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="sessions">
|
<tr data-ng-show="sessions">
|
||||||
<th>User</th>
|
<th>{{:: 'user' | translate}}</th>
|
||||||
<th>From IP</th>
|
<th>{{:: 'from-ip' | translate}}</th>
|
||||||
<th>Token Issued</th>
|
<th>{{:: 'token-issued' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tfoot data-ng-show="sessions && (sessions.length >= 5 || query.first != 0)">
|
<tfoot data-ng-show="sessions && (sessions.length >= 5 || query.first != 0)">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7">
|
<td colspan="7">
|
||||||
<div class="table-nav">
|
<div class="table-nav">
|
||||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button>
|
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">{{:: 'first-page' | translate}}</button>
|
||||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
|
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">{{:: 'previous-page' | translate}}</button>
|
||||||
<button data-ng-click="nextPage()" class="next" ng-disabled="sessions.length < query.max">Next page</button>
|
<button data-ng-click="nextPage()" class="next" ng-disabled="sessions.length < query.max">{{:: 'next-page' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -10,18 +10,18 @@
|
||||||
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="notBefore">Not Before</label>
|
<label class="col-md-2 control-label" for="notBefore">{{:: 'not-before' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
|
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Revoke any tokens issued before this date for this client.</kc-tooltip>
|
<kc-tooltip>{{:: 'client-revoke.not-before.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
||||||
<button type="submit" data-ng-click="clear()" class="btn btn-default">Clear</button>
|
<button type="submit" data-ng-click="clear()" class="btn btn-default">{{:: 'clear' | translate}}</button>
|
||||||
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-default">Set To Now</button>
|
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-default">{{:: 'set-to-now' | translate}}</button>
|
||||||
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary" tooltip-trigger="mouseover mouseout" tooltip="If admin URL is configured for this client, push this policy to that client." tooltip-placement="bottom">Push</button>
|
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'client-revoke.push.tooltip' | translate}}" tooltip-placement="bottom">{{:: 'push' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">Roles</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">{{:: 'roles' | translate}}</a></li>
|
||||||
<li data-ng-show="create">Add role</li>
|
<li data-ng-show="create">{{:: 'add-role' | translate}}</li>
|
||||||
<li data-ng-hide="create">{{role.name}}</li>
|
<li data-ng-hide="create">{{role.name}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1 data-ng-show="create">Add Role</h1>
|
<h1 data-ng-show="create">{{:: 'add-role' | translate}}</h1>
|
||||||
<h1 data-ng-hide="create">{{role.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageClients"
|
<h1 data-ng-hide="create">{{role.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageClients"
|
||||||
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
|
<label class="col-md-2 control-label" for="name">{{:: 'role-name' | translate}} <span class="required" data-ng-show="create">*</span></label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
|
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="description">Description </label>
|
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
|
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
|
||||||
|
@ -33,64 +33,64 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="scopeParamRequired">Scope Param Required </label>
|
<label class="col-md-2 control-label" for="scopeParamRequired">{{:: 'scope-param-required' | translate}} </label>
|
||||||
<kc-tooltip>This role will be granted just if scope parameter with role name is used during authorization/token request.</kc-tooltip>
|
<kc-tooltip>{{:: 'scope-param-required.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="role.scopeParamRequired" name="scopeParamRequired" id="scopeParamRequired" onoffswitch />
|
<input ng-model="role.scopeParamRequired" name="scopeParamRequired" id="scopeParamRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-hide="create">
|
<div class="form-group clearfix block" data-ng-hide="create">
|
||||||
<label class="col-md-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
|
<label class="col-md-2 control-label" for="compositeSwitch" class="control-label">{{:: 'composite-roles' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
|
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly.</kc-tooltip>
|
<kc-tooltip>{{:: 'composite-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageClients">
|
||||||
<button kc-save>Save</button>
|
<button kc-save>{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageClients">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageClients">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
|
<fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
|
||||||
<legend uncollapsed><span class="text">Composite Roles</span> </legend>
|
<legend uncollapsed><span class="text">{{:: 'composite-roles' | translate}}</span> </legend>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="control-label" for="available">Available Roles</label>
|
<label class="control-label" for="available">{{:: 'available-roles' | translate}}</label>
|
||||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'composite.available-realm-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="available" class="form-control" multiple size="5"
|
<select id="available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedRealmRoles"
|
ng-model="selectedRealmRoles"
|
||||||
ng-options="r.name for r in realmRoles">
|
ng-options="r.name for r in realmRoles">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
||||||
Add selected <i class="fa fa-angle-double-right"></i>
|
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="control-label" for="assigned">Associated Roles</label>
|
<label class="control-label" for="assigned">{{:: 'associated-roles' | translate}}</label>
|
||||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'composite.associated-realm-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="assigned" class="form-control" multiple size=5
|
<select id="assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedRealmMappings"
|
ng-model="selectedRealmMappings"
|
||||||
ng-options="r.name for r in realmMappings">
|
ng-options="r.name for r in realmMappings">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
||||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -99,37 +99,37 @@
|
||||||
|
|
||||||
<div class="form-group" ng-show="clients.length > 0 && !create && (compositeSwitch || role.composite)">
|
<div class="form-group" ng-show="clients.length > 0 && !create && (compositeSwitch || role.composite)">
|
||||||
<label class="col-md-2 control-label" class="control-label">
|
<label class="col-md-2 control-label" class="control-label">
|
||||||
<span>Client Roles</span>
|
<span>{{:: 'client-roles' | translate}}</span>
|
||||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="row" data-ng-hide="compositeClient">
|
<div class="row" data-ng-hide="compositeClient">
|
||||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-to-view-roles' | translate}}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" data-ng-show="compositeClient">
|
<div class="row" data-ng-show="compositeClient">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="control-label" for="available-client">Available Roles</label>
|
<label class="control-label" for="available-client">{{:: 'available-roles' | translate}}</label>
|
||||||
<kc-tooltip>Roles from this client that you can associate to this composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'available-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="available-client" class="form-control" multiple size="5"
|
<select id="available-client" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedClientRoles"
|
ng-model="selectedClientRoles"
|
||||||
ng-options="r.name for r in clientRoles">
|
ng-options="r.name for r in clientRoles">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
||||||
Add selected <i class="fa fa-angle-double-right"></i>
|
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="control-label" for="assigned-client">Associated Roles</label>
|
<label class="control-label" for="assigned-client">{{:: 'associated-roles' | translate}}</label>
|
||||||
<kc-tooltip>Client roles associated with this composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'client.associated-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="assigned-client" class="form-control" multiple size=5
|
<select id="assigned-client" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedClientMappings"
|
ng-model="selectedClientMappings"
|
||||||
ng-options="r.name for r in clientMappings">
|
ng-options="r.name for r in clientMappings">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
||||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -12,28 +12,28 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th class="kc-table-actions" colspan="4" data-ng-show="access.manageClients">
|
<th class="kc-table-actions" colspan="4" data-ng-show="access.manageClients">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<a class="btn btn-default" href="#/create/role/{{realm.realm}}/clients/{{client.id}}">Add Role</a>
|
<a class="btn btn-default" href="#/create/role/{{realm.realm}}/clients/{{client.id}}">{{:: 'add-role' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-hide="!roles || roles.length == 0">
|
<tr data-ng-hide="!roles || roles.length == 0">
|
||||||
<th>Role Name</th>
|
<th>{{:: 'role-name' | translate}}</th>
|
||||||
<th>Composite</th>
|
<th>{{:: 'composite' | translate}}</th>
|
||||||
<th>Description</th>
|
<th>{{:: 'description' | translate}}</th>
|
||||||
<th>Actions</th>
|
<th>{{:: 'actions' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr ng-repeat="role in roles">
|
<tr ng-repeat="role in roles">
|
||||||
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}">{{role.name}}</a></td>
|
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}">{{role.name}}</a></td>
|
||||||
<td>{{role.composite}}</td>
|
<td translate="{{role.composite}}"></td>
|
||||||
<td>{{role.description}}</td>
|
<td>{{role.description}}</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}">Edit</button>
|
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}">{{:: 'edit' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="!roles || roles.length == 0">
|
<tr data-ng-show="!roles || roles.length == 0">
|
||||||
<td>No client roles available</td>
|
<td>{{:: 'no-client-roles-available' | translate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">SAML Keys</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">{{:: 'saml-keys' | translate}}</a></li>
|
||||||
<li class="active">SAML {{keyType}} Key Export</li>
|
<li class="active">SAML {{keyType}} {{:: 'key-export' | translate}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1>Export SAML Key {{client.clientId|capitalize}}</h1>
|
<h1>{{:: 'export-saml-key' | translate}} {{client.clientId|capitalize}}</h1>
|
||||||
|
|
||||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset class="form-group col-sm-10">
|
<fieldset class="form-group col-sm-10">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
<label class="col-md-2 control-label" for="downloadKeyFormat">{{:: 'archive-format' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="downloadKeyFormat"
|
<select class="form-control" id="downloadKeyFormat"
|
||||||
|
@ -21,39 +21,39 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
<kc-tooltip>{{:: 'archive-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="keyAlias">Key Alias</label>
|
<label class="col-md-2 control-label" for="keyAlias">{{:: 'key-alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="keyAlias" name="keyAlias" data-ng-model="jks.keyAlias" autofocus required>
|
<input class="form-control" type="text" id="keyAlias" name="keyAlias" data-ng-model="jks.keyAlias" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Archive alias for your private key and certificate.</kc-tooltip>
|
<kc-tooltip>{{:: 'key-alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="!keyInfo.privateKey">
|
<div class="form-group" data-ng-hide="!keyInfo.privateKey">
|
||||||
<label class="col-md-2 control-label" for="keyPassword">Key Password</label>
|
<label class="col-md-2 control-label" for="keyPassword">{{:: 'key-password' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="password" id="keyPassword" name="keyPassword" data-ng-model="jks.keyPassword" autofocus required>
|
<input class="form-control" type="password" id="keyPassword" name="keyPassword" data-ng-model="jks.keyPassword" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Password to access the private key in the archive</kc-tooltip>
|
<kc-tooltip>{{:: 'key-password.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="realmAlias">Realm Certificate Alias</label>
|
<label class="col-md-2 control-label" for="realmAlias">{{:: 'realm-certificate-alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="realmAlias" name="realmAlias" data-ng-model="jks.realmAlias" autofocus required>
|
<input class="form-control" type="text" id="realmAlias" name="realmAlias" data-ng-model="jks.realmAlias" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Realm certificate is stored in archive too. This is the alias to it.</kc-tooltip>
|
<kc-tooltip>{{:: 'realm-certificate-alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storePassword">Store Password</label>
|
<label class="col-md-2 control-label" for="storePassword">{{:: 'store-password' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="password" id="storePassword" name="storePassword" data-ng-model="jks.storePassword" autofocus required>
|
<input class="form-control" type="password" id="storePassword" name="storePassword" data-ng-model="jks.storePassword" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
<kc-tooltip>{{:: 'store-password.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||||
<button class="btn btn-primary" type="submit" data-ng-click="download()">Download</button>
|
<button class="btn btn-primary" type="submit" data-ng-click="download()">{{:: 'download' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">SAML Keys</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">{{:: 'saml-keys' | translate}}</a></li>
|
||||||
<li class="active">SAML {{keyType}} Key Import</li>
|
<li class="active">SAML {{keyType}} {{:: 'key-import' | translate}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1>Import SAML Key {{client.clientId|capitalize}}</h1>
|
<h1>{{:: 'import-saml-key' | translate}} {{client.clientId|capitalize}}</h1>
|
||||||
|
|
||||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
<label class="col-md-2 control-label" for="uploadKeyFormat">{{:: 'archive-format' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="uploadKeyFormat"
|
<select class="form-control" id="uploadKeyFormat"
|
||||||
|
@ -21,24 +21,24 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
<kc-tooltip>{{:: 'archive-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
<label class="col-md-2 control-label" for="uploadKeyAlias">{{:: 'key-alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Archive alias for your certificate.</kc-tooltip>
|
<kc-tooltip>{{:: 'key-alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="uploadStorePassword">Store Password</label>
|
<label class="col-md-2 control-label" for="uploadStorePassword">{{:: 'store-password' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
<kc-tooltip>{{:: 'store-password.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label">Import File </label>
|
<label class="col-md-2 control-label">{{:: 'import-file' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||||
|
@ -51,8 +51,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="files.length > 0">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="files.length > 0">
|
||||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">Cancel</button>
|
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -9,9 +9,9 @@
|
||||||
|
|
||||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset class="form-group col-sm-10" data-ng-show="client.attributes['saml.client.signature'] == 'true'">
|
<fieldset class="form-group col-sm-10" data-ng-show="client.attributes['saml.client.signature'] == 'true'">
|
||||||
<legend uncollapsed><span class="text">Signing Key</span> <kc-tooltip>SAML Signing Key.</kc-tooltip></legend>
|
<legend uncollapsed><span class="text">{{:: 'signing-key' | translate}}</span> <kc-tooltip>{{:: 'saml-signing-key' | translate}}</kc-tooltip></legend>
|
||||||
<div class="form-group" data-ng-hide="!signingKeyInfo.privateKey">
|
<div class="form-group" data-ng-hide="!signingKeyInfo.privateKey">
|
||||||
<label class="col-md-2 control-label" for="signingPrivateKey">Private key</label>
|
<label class="col-md-2 control-label" for="signingPrivateKey">{{:: 'private-key' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea type="text" id="signingPrivateKey" name="signingPrivateKey" class="form-control" rows="5"
|
<textarea type="text" id="signingPrivateKey" name="signingPrivateKey" class="form-control" rows="5"
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="!signingKeyInfo.certificate">
|
<div class="form-group" data-ng-hide="!signingKeyInfo.certificate">
|
||||||
<label class="col-md-2 control-label" for="signingCert">Certificate</label>
|
<label class="col-md-2 control-label" for="signingCert">{{:: 'certificate' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea type="text" id="signingCert" name="signingCert" class="form-control" rows="5"
|
<textarea type="text" id="signingCert" name="signingCert" class="form-control" rows="5"
|
||||||
|
@ -28,16 +28,16 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="generateSigningKey()">Generate new keys</button>
|
<button class="btn btn-default" type="submit" data-ng-click="generateSigningKey()">{{:: 'generate-new-keys' | translate}}</button>
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="importSigningKey()">Import</button>
|
<button class="btn btn-default" type="submit" data-ng-click="importSigningKey()">{{:: 'import' | translate}}</button>
|
||||||
<button class="btn btn-default" type="submit" data-ng-hide="!signingKeyInfo.certificate" data-ng-click="exportSigningKey()">Export</button>
|
<button class="btn btn-default" type="submit" data-ng-hide="!signingKeyInfo.certificate" data-ng-click="exportSigningKey()">{{:: 'export' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset class="form-group col-sm-10" data-ng-show="client.attributes['saml.encrypt'] == 'true'">
|
<fieldset class="form-group col-sm-10" data-ng-show="client.attributes['saml.encrypt'] == 'true'">
|
||||||
<legend uncollapsed><span class="text">Encryption Key</span> <kc-tooltip>SAML Encryption Key.</kc-tooltip></legend>
|
<legend uncollapsed><span class="text">{{:: 'encryption-key' | translate}}</span> <kc-tooltip>{{:: 'saml-encryption-key.tooltip' | translate}}</kc-tooltip></legend>
|
||||||
<div class="form-group" data-ng-hide="!encryptionKeyInfo.privateKey">
|
<div class="form-group" data-ng-hide="!encryptionKeyInfo.privateKey">
|
||||||
<label class="col-md-2 control-label" for="encryptionPrivateKey">Private key</label>
|
<label class="col-md-2 control-label" for="encryptionPrivateKey">{{:: 'private-key' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea type="text" id="encryptionPrivateKey" name="encryptionPrivateKey" class="form-control" rows="5"
|
<textarea type="text" id="encryptionPrivateKey" name="encryptionPrivateKey" class="form-control" rows="5"
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="!encryptionKeyInfo.certificate">
|
<div class="form-group" data-ng-hide="!encryptionKeyInfo.certificate">
|
||||||
<label class="col-md-2 control-label" for="encryptionCert">Certificate</label>
|
<label class="col-md-2 control-label" for="encryptionCert">{{:: 'certificate' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea type="text" id="encryptionCert" name="encryptionCert" class="form-control" rows="5"
|
<textarea type="text" id="encryptionCert" name="encryptionCert" class="form-control" rows="5"
|
||||||
|
@ -54,9 +54,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="generateEncryptionKey()">Generate new keys</button>
|
<button class="btn btn-default" type="submit" data-ng-click="generateEncryptionKey()">{{:: 'generate-new-keys' | translate}}</button>
|
||||||
<button class="btn btn-default" type="submit" data-ng-click="importEncryptionKey()">Import</button>
|
<button class="btn btn-default" type="submit" data-ng-click="importEncryptionKey()">{{:: 'import' | translate}}</button>
|
||||||
<button class="btn btn-default" type="submit" data-ng-hide="!encryptionKeyInfo.certificate" data-ng-click="exportEncryptionKey()">Export</button>
|
<button class="btn btn-default" type="submit" data-ng-hide="!encryptionKeyInfo.certificate" data-ng-click="exportEncryptionKey()">{{:: 'export' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<kc-tabs-client></kc-tabs-client>
|
<kc-tabs-client></kc-tabs-client>
|
||||||
|
|
||||||
<h2><span>{{client.clientId}}</span> Scope Mappings </h2>
|
<h2><span>{{client.clientId}}</span> {{:: 'scope-mappings' | translate}} </h2>
|
||||||
<p class="subtitle"></p>
|
<p class="subtitle"></p>
|
||||||
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients">
|
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label>
|
<label class="col-md-2 control-label" for="fullScopeAllowed">{{:: 'full-scope-allowed' | translate}}</label>
|
||||||
<kc-tooltip>Allows you to disable all restrictions.</kc-tooltip>
|
<kc-tooltip>{{:: 'full-scope-allowed.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
|
<input ng-model="client.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
@ -23,12 +23,12 @@
|
||||||
|
|
||||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!client.fullScopeAllowed">
|
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!client.fullScopeAllowed">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="available">Available Roles</label>
|
<label class="control-label" for="available">{{:: 'available-roles' | translate}}</label>
|
||||||
<kc-tooltip>Realm level roles that can be assigned to scope.</kc-tooltip>
|
<kc-tooltip>{{:: 'scope.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
|
|
||||||
<select id="available" class="form-control" multiple size="5"
|
<select id="available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
|
@ -36,24 +36,24 @@
|
||||||
ng-options="r.name for r in realmRoles">
|
ng-options="r.name for r in realmRoles">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
||||||
Add selected <i class="fa fa-angle-double-right"></i>
|
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
<label class="control-label" for="assigned">{{:: 'assigned-roles' | translate}}</label>
|
||||||
<kc-tooltip>Realm level roles assigned to scope.</kc-tooltip>
|
<kc-tooltip>{{:: 'assigned-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="assigned" class="form-control" multiple size=5
|
<select id="assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedRealmMappings"
|
ng-model="selectedRealmMappings"
|
||||||
ng-options="r.name for r in realmMappings">
|
ng-options="r.name for r in realmMappings">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
||||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="realm-composite">Effective Roles </label>
|
<label class="control-label" for="realm-composite">{{:: 'effective-roles' | translate}} </label>
|
||||||
<kc-tooltip>Assigned realm level roles that may have been inherited from a composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'realm.effective-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="realm-composite" class="form-control" multiple size=5
|
<select id="realm-composite" class="form-control" multiple size=5
|
||||||
disabled="true"
|
disabled="true"
|
||||||
ng-model="dummymodel"
|
ng-model="dummymodel"
|
||||||
|
@ -66,42 +66,42 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" class="control-label">
|
<label class="col-md-2 control-label" class="control-label">
|
||||||
<span>Client Roles</span>
|
<span>{{:: 'client-roles' | translate}}</span>
|
||||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="row" data-ng-hide="targetClient">
|
<div class="row" data-ng-hide="targetClient">
|
||||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-roles.tooltip' | translate}}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" data-ng-show="targetClient">
|
<div class="row" data-ng-show="targetClient">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="client-available">Available Roles</label>
|
<label class="control-label" for="client-available">{{:: 'available-roles' | translate}}</label>
|
||||||
<kc-tooltip>Client roles available to be assigned.</kc-tooltip>
|
<kc-tooltip>{{:: 'assign.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="client-available" class="form-control" multiple size="5"
|
<select id="client-available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedClientRoles"
|
ng-model="selectedClientRoles"
|
||||||
ng-options="r.name for r in clientRoles">
|
ng-options="r.name for r in clientRoles">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
||||||
Add selected <i class="fa fa-angle-double-right"></i>
|
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="client-assigned">Assigned Roles</label>
|
<label class="control-label" for="client-assigned">{{:: 'assigned-roles' | translate}}</label>
|
||||||
<kc-tooltip>Assigned client roles.</kc-tooltip>
|
<kc-tooltip>{{:: 'client.assigned-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="client-assigned" class="form-control" multiple size=5
|
<select id="client-assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedClientMappings"
|
ng-model="selectedClientMappings"
|
||||||
ng-options="r.name for r in clientMappings">
|
ng-options="r.name for r in clientMappings">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
||||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="client-composite">Effective Roles</label>
|
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}}</label>
|
||||||
<kc-tooltip>Assigned client roles that may have been inherited from a composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'client.effective-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="client-composite" class="form-control" multiple size=5
|
<select id="client-composite" class="form-control" multiple size=5
|
||||||
disabled="true"
|
disabled="true"
|
||||||
ng-model="dummymodel"
|
ng-model="dummymodel"
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<kc-tabs-client></kc-tabs-client>
|
<kc-tabs-client></kc-tabs-client>
|
||||||
|
|
||||||
<h2><span>{{client.clientId}}</span> Service Accounts </h2>
|
<h2><span>{{client.clientId}}</span> {{:: 'service-accounts' | translate}} </h2>
|
||||||
<p class="subtitle"></p>
|
<p class="subtitle"></p>
|
||||||
|
|
||||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="client.serviceAccountsEnabled">
|
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="client.serviceAccountsEnabled">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="available">Available Roles</label>
|
<label class="control-label" for="available">{{:: 'available-roles' | translate}}</label>
|
||||||
<kc-tooltip>Realm level roles that can be assigned to service account.</kc-tooltip>
|
<kc-tooltip>{{:: 'service-account.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
|
|
||||||
<select id="available" class="form-control" multiple size="5"
|
<select id="available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
|
@ -25,24 +25,24 @@
|
||||||
ng-options="r.name for r in realmRoles">
|
ng-options="r.name for r in realmRoles">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
||||||
Add selected <i class="fa fa-angle-double-right"></i>
|
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
<label class="control-label" for="assigned">{{:: 'assigned-roles' | translate}}</label>
|
||||||
<kc-tooltip>Realm level roles assigned to service account.</kc-tooltip>
|
<kc-tooltip>{{:: 'service-account.assigned-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="assigned" class="form-control" multiple size=5
|
<select id="assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedRealmMappings"
|
ng-model="selectedRealmMappings"
|
||||||
ng-options="r.name for r in realmMappings">
|
ng-options="r.name for r in realmMappings">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
||||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="realm-composite">Effective Roles </label>
|
<label class="control-label" for="realm-composite">{{:: 'effective-roles' | translate}} </label>
|
||||||
<kc-tooltip>Assigned realm level roles that may have been inherited from a composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'realm.effective-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="realm-composite" class="form-control" multiple size=5
|
<select id="realm-composite" class="form-control" multiple size=5
|
||||||
disabled="true"
|
disabled="true"
|
||||||
ng-model="dummymodel"
|
ng-model="dummymodel"
|
||||||
|
@ -55,42 +55,42 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" class="control-label">
|
<label class="col-md-2 control-label" class="control-label">
|
||||||
<span>Client Roles</span>
|
<span>{{:: 'client-roles' | translate}}</span>
|
||||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="row" data-ng-hide="targetClient">
|
<div class="row" data-ng-hide="targetClient">
|
||||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-to-view-roles' | translate}}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" data-ng-show="targetClient">
|
<div class="row" data-ng-show="targetClient">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="client-available">Available Roles</label>
|
<label class="control-label" for="client-available">{{:: 'available-roles' | translate}}</label>
|
||||||
<kc-tooltip>Client roles available to be assigned.</kc-tooltip>
|
<kc-tooltip>{{:: 'assign.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="client-available" class="form-control" multiple size="5"
|
<select id="client-available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedClientRoles"
|
ng-model="selectedClientRoles"
|
||||||
ng-options="r.name for r in clientRoles">
|
ng-options="r.name for r in clientRoles">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
||||||
Add selected <i class="fa fa-angle-double-right"></i>
|
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="client-assigned">Assigned Roles</label>
|
<label class="control-label" for="client-assigned">{{:: 'assigned-roles' | translate}}</label>
|
||||||
<kc-tooltip>Assigned client roles.</kc-tooltip>
|
<kc-tooltip>{{:: 'client.assigned-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="client-assigned" class="form-control" multiple size=5
|
<select id="client-assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedClientMappings"
|
ng-model="selectedClientMappings"
|
||||||
ng-options="r.name for r in clientMappings">
|
ng-options="r.name for r in clientMappings">
|
||||||
</select>
|
</select>
|
||||||
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
||||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="control-label" for="client-composite">Effective Roles</label>
|
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}}</label>
|
||||||
<kc-tooltip>Assigned client roles that may have been inherited from a composite role.</kc-tooltip>
|
<kc-tooltip>{{:: 'client.effective-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
<select id="client-composite" class="form-control" multiple size=5
|
<select id="client-composite" class="form-control" multiple size=5
|
||||||
disabled="true"
|
disabled="true"
|
||||||
ng-model="dummymodel"
|
ng-model="dummymodel"
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!client.serviceAccountsEnabled">
|
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!client.serviceAccountsEnabled">
|
||||||
<legend><span class="text">Service account is not enabled for {{client.clientId}}.</span></legend>
|
<legend><span class="text" translate="service-account-is-not-enabled-for" translate-values="{client: client.clientId}"></span></legend>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li>{{client.clientId}}</li>
|
<li>{{client.clientId}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@
|
||||||
<form class="form-horizontal" name="sessionStats">
|
<form class="form-horizontal" name="sessionStats">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="activeSessions">Active Sessions</label>
|
<label class="col-md-2 control-label" for="activeSessions">{{:: 'active-sessions' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Total number of active user sessions for this client.</kc-tooltip>
|
<kc-tooltip>{{:: 'active-sessions.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
@ -23,23 +23,23 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th class="kc-table-actions" colspan="3">
|
<th class="kc-table-actions" colspan="3">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<a class="btn btn-default" ng-click="loadUsers()" tooltip-placement="left" tooltip-trigger="mouseover mouseout" tooltip="Warning, this is a potentially expensive operation depending on number of active sessions.">Show Sessions</a>
|
<a class="btn btn-default" ng-click="loadUsers()" tooltip-placement="left" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'show-sessions.tooltip' | translate}}">{{:: 'show-sessions' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="sessions">
|
<tr data-ng-show="sessions">
|
||||||
<th>User</th>
|
<th>{{:: 'user' | translate}}</th>
|
||||||
<th>From IP</th>
|
<th>{{:: 'from-ip' | translate}}</th>
|
||||||
<th>Session Start</th>
|
<th>{{:: 'session-start' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tfoot data-ng-show="sessions && (sessions.length >= 5 || query.first != 0)">
|
<tfoot data-ng-show="sessions && (sessions.length >= 5 || query.first != 0)">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7">
|
<td colspan="7">
|
||||||
<div class="table-nav">
|
<div class="table-nav">
|
||||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button>
|
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">{{:: 'first-page' | translate}}</button>
|
||||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
|
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">{{:: 'previous-page' | translate}}</button>
|
||||||
<button data-ng-click="nextPage()" class="next" ng-disabled="sessions.length < query.max">Next page</button>
|
<button data-ng-click="nextPage()" class="next" ng-disabled="sessions.length < query.max">{{:: 'next-page' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Identity Provider Mappers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">{{:: 'identity-provider-mappers' | translate}}</a></li>
|
||||||
<li class="active" data-ng-show="create">Create IdentityProvider Mapper</li>
|
<li class="active" data-ng-show="create">{{:: 'create-identity-provider-mapper' | translate}}</li>
|
||||||
<li class="active" data-ng-hide="create">{{mapper.name|capitalize}}</li>
|
<li class="active" data-ng-hide="create">{{mapper.name|capitalize}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1 data-ng-hide="create">{{mapper.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
<h1 data-ng-hide="create">{{mapper.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
||||||
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
||||||
<h1 data-ng-show="create">Add Identity Provider Mapper</h1>
|
<h1 data-ng-show="create">{{:: 'add-identity-provider-mapper' | translate}}</h1>
|
||||||
|
|
||||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix" data-ng-show="!create">
|
<div class="form-group clearfix" data-ng-show="!create">
|
||||||
<label class="col-md-2 control-label" for="mapperId">ID </label>
|
<label class="col-md-2 control-label" for="mapperId">{{:: 'id' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="name">Name <span class="required">*</span></label>
|
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} <span class="required">*</span></label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create" required>
|
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Name of the mapper.</kc-tooltip>
|
<kc-tooltip>{{:: 'mapper.name.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="create">
|
<div class="form-group" data-ng-show="create">
|
||||||
<label class="col-md-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
<label class="col-md-2 control-label" for="mapperTypeCreate">{{:: 'mapper-type' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="mapperTypeCreate"
|
<select class="form-control" id="mapperTypeCreate"
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix" data-ng-hide="create">
|
<div class="form-group clearfix" data-ng-hide="create">
|
||||||
<label class="col-md-2 control-label" for="mapperType">Mapper Type</label>
|
<label class="col-md-2 control-label" for="mapperType">{{:: 'mapper-type' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
||||||
</div>
|
</div>
|
||||||
|
@ -50,15 +50,15 @@
|
||||||
|
|
||||||
<div class="form-group" data-ng-show="create && access.manageRealm">
|
<div class="form-group" data-ng-show="create && access.manageRealm">
|
||||||
<div class="col-md-10 col-md-offset-2">
|
<div class="col-md-10 col-md-offset-2">
|
||||||
<button kc-save>Save</button>
|
<button kc-save>{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" data-ng-show="!create && access.manageRealm">
|
<div class="form-group" data-ng-show="!create && access.manageRealm">
|
||||||
<div class="col-md-10 col-md-offset-2">
|
<div class="col-md-10 col-md-offset-2">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
|
||||||
<li>{{identityProvider.alias}}</li>
|
<li>{{identityProvider.alias}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -13,22 +13,22 @@
|
||||||
<div class="form-inline">
|
<div class="form-inline">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||||
<div class="input-group-addon">
|
<div class="input-group-addon">
|
||||||
<i class="fa fa-search" type="submit"></i>
|
<i class="fa fa-search" type="submit"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<a class="btn btn-primary" href="#/create/identity-provider-mappers/{{realm.realm}}/{{identityProvider.alias}}">Create</a>
|
<a class="btn btn-primary" href="#/create/identity-provider-mappers/{{realm.realm}}/{{identityProvider.alias}}">{{:: 'create' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-hide="mappers.length == 0">
|
<tr data-ng-hide="mappers.length == 0">
|
||||||
<th>Name</th>
|
<th>{{:: 'name' | translate}}</th>
|
||||||
<th>Category</th>
|
<th>{{:: 'category' | translate}}</th>
|
||||||
<th>Type</th>
|
<th>{{:: 'type' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
<td>{{mapperTypes[mapper.identityProviderMapper].name}}</td>
|
<td>{{mapperTypes[mapper.identityProviderMapper].name}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-ng-show="mappers.length == 0">
|
<tr data-ng-show="mappers.length == 0">
|
||||||
<td>No mappers available</td>
|
<td>{{:: 'no-mappers-available' | translate}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">{{:: 'mappers' | translate}}</a></li>
|
||||||
<li class="active" data-ng-show="create">Create Protocol Mappers</li>
|
<li class="active" data-ng-show="create">{{:: 'create-protocol-mappers' | translate}}</li>
|
||||||
<li class="active" data-ng-hide="create">{{mapper.name}}</li>
|
<li class="active" data-ng-hide="create">{{mapper.name}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h1 data-ng-show="create">Create Protocol Mapper</h1>
|
<h1 data-ng-show="create">{{:: 'create-protocol-mapper' | translate}}</h1>
|
||||||
<h1 data-ng-hide="create">{{mapper.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
<h1 data-ng-hide="create">{{mapper.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
||||||
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
||||||
|
|
||||||
|
@ -16,42 +16,42 @@
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="protocol">Protocol</label>
|
<label class="col-md-2 control-label" for="protocol">{{:: 'protocol' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="protocol" type="text" ng-model="protocol" readonly>
|
<input class="form-control" id="protocol" type="text" ng-model="protocol" readonly>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Protocol.</kc-tooltip>
|
<kc-tooltip>{{:: 'protocol.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix" data-ng-show="!create">
|
<div class="form-group clearfix" data-ng-show="!create">
|
||||||
<label class="col-md-2 control-label" for="mapperId">ID </label>
|
<label class="col-md-2 control-label" for="mapperId">{{:: 'id' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="name">Name</label>
|
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create">
|
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Name of the mapper.</kc-tooltip>
|
<kc-tooltip>{{:: 'mapper.name.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="consentRequired" class="col-sm-2 control-label">Consent required</label>
|
<label for="consentRequired" class="col-sm-2 control-label">{{:: 'consent-required' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="mapper.consentRequired" name="consentRequired" id="consentRequired" onoffswitch />
|
<input ng-model="mapper.consentRequired" name="consentRequired" id="consentRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>When granting temporary access, must the user consent to providing this data to the client?</kc-tooltip>
|
<kc-tooltip>{{:: 'mapper.consent-required.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="mapper.consentRequired">
|
<div class="form-group" data-ng-show="mapper.consentRequired">
|
||||||
<label class="col-md-2 control-label" for="consentText">Consent Text </label>
|
<label class="col-md-2 control-label" for="consentText">{{:: 'consent-text' | translate}} </label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<textarea class="form-control" rows="5" cols="50" id="consentText" name="consentText" data-ng-model="mapper.consentText"></textarea>
|
<textarea class="form-control" rows="5" cols="50" id="consentText" name="consentText" data-ng-model="mapper.consentText"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Text to display on consent page</kc-tooltip>
|
<kc-tooltip>{{:: 'consent-text.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="create">
|
<div class="form-group" data-ng-show="create">
|
||||||
<label class="col-md-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
<label class="col-md-2 control-label" for="mapperTypeCreate">{{:: 'mapper-type' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="mapperTypeCreate"
|
<select class="form-control" id="mapperTypeCreate"
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix" data-ng-hide="create">
|
<div class="form-group clearfix" data-ng-hide="create">
|
||||||
<label class="col-md-2 control-label" for="mapperType">Mapper Type</label>
|
<label class="col-md-2 control-label" for="mapperType">{{:: 'mapper-type' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
||||||
</div>
|
</div>
|
||||||
|
@ -74,15 +74,15 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
|
||||||
<button kc-save>Save</button>
|
<button kc-save>{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
|
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
|
||||||
<li>{{identityProvider.alias}}</li>
|
<li>{{identityProvider.alias}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<a class="btn btn-primary" data-ng-click="download()" type="submit">Download</a>
|
<a class="btn btn-primary" data-ng-click="download()" type="submit">{{:: 'download' | translate}}</a>
|
||||||
<textarea class="form-control" rows="20" kc-select-action="click">{{exported}}</textarea>
|
<textarea class="form-control" rows="20" kc-select-action="click">{{exported}}</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
|
||||||
<li>{{identityProvider.alias}}</li>
|
<li>{{identityProvider.alias}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -9,193 +9,193 @@
|
||||||
<form class="form-horizontal" name="realmForm" novalidate>
|
<form class="form-horizontal" name="realmForm" novalidate>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="redirectUri">Redirect URI</label>
|
<label class="col-md-2 control-label" for="redirectUri">{{:: 'redirect-uri' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The redirect uri to use when configuring the identity provider</kc-tooltip>
|
<kc-tooltip>{{:: 'redirect-uri.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="identifier"><span class="required">*</span> Alias</label>
|
<label class="col-md-2 control-label" for="identifier"><span class="required">*</span> {{:: 'alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="identifier" type="text" ng-model="identityProvider.alias" data-ng-readonly="!newIdentityProvider" required>
|
<input class="form-control" id="identifier" type="text" ng-model="identityProvider.alias" data-ng-readonly="!newIdentityProvider" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The alias unique identifies an identity provider and it is also used to build the redirect uri.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
<label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch />
|
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable this identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
<label class="col-md-2 control-label" for="authenticateByDefault">{{:: 'authenticate-by-default' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch />
|
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Indicates if this provider should be tried by default for authentication even before displaying login screen</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.authenticate-by-default.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storeToken">Store Tokens</label>
|
<label class="col-md-2 control-label" for="storeToken">{{:: 'store-tokens' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch />
|
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable if tokens must be stored after authenticating users.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.store-tokens.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
<label class="col-md-2 control-label" for="storedTokensReadable">{{:: 'stored-tokens-readable' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch />
|
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable new users can read any stored tokens. This assigns the broker.read-token role.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.stored-tokens-readable.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="updateProfileFirstLoginMode">Update Profile on First Login</label>
|
<label class="col-md-2 control-label" for="updateProfileFirstLoginMode">{{:: 'update-profile-on-first-login' | translate}}</label>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div>
|
<div>
|
||||||
<select id="updateProfileFirstLoginMode" ng-model="identityProvider.updateProfileFirstLoginMode" class="form-control">
|
<select id="updateProfileFirstLoginMode" ng-model="identityProvider.updateProfileFirstLoginMode" class="form-control">
|
||||||
<option value="on">On</option>
|
<option value="on">{{:: 'on' | translate}}</option>
|
||||||
<option value="missing">On missing info</option>
|
<option value="missing">{{:: 'on-missing-info' | translate}}</option>
|
||||||
<option value="off">Off</option>
|
<option value="off">{{:: 'off' | translate}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Define under which conditions must user update his profile right after the first login.</kc-tooltip>
|
<kc-tooltip>{{:: 'update-profile-on-first-login.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="trustEmail">Trust email</label>
|
<label class="col-md-2 control-label" for="trustEmail">{{:: 'trust-email' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.trustEmail" name="identityProvider.trustEmail" id="trustEmail" onoffswitch />
|
<input ng-model="identityProvider.trustEmail" name="identityProvider.trustEmail" id="trustEmail" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>If enabled then email provided by this provider is not verified even if verification is enabled for the realm.</kc-tooltip>
|
<kc-tooltip>{{:: 'trust-email.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="guiOrder">GUI order</label>
|
<label class="col-md-2 control-label" for="guiOrder">{{:: 'gui-order' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Number defining order of the provider in GUI (eg. on Login page).</kc-tooltip>
|
<kc-tooltip>{{:: 'gui-order.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend uncollapsed><span class="text">OpenID Connect Config</span> <kc-tooltip>OIDC SP and external IDP configuration.</kc-tooltip></legend>
|
<legend uncollapsed><span class="text">{{:: 'openid-connect-config' | translate}}</span> <kc-tooltip>{{:: 'openid-connect-config.tooltip' | translate}}</kc-tooltip></legend>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="authorizationUrl"><span class="required">*</span> Authorization Url</label>
|
<label class="col-md-2 control-label" for="authorizationUrl"><span class="required">*</span> {{:: 'authorization-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="authorizationUrl" type="text" ng-model="identityProvider.config.authorizationUrl" required>
|
<input class="form-control" id="authorizationUrl" type="text" ng-model="identityProvider.config.authorizationUrl" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The Authorization Url.</kc-tooltip>
|
<kc-tooltip>{{:: 'authorization-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="tokenUrl"><span class="required">*</span> Token Url</label>
|
<label class="col-md-2 control-label" for="tokenUrl"><span class="required">*</span> {{:: 'token-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="tokenUrl" type="text" ng-model="identityProvider.config.tokenUrl" required>
|
<input class="form-control" id="tokenUrl" type="text" ng-model="identityProvider.config.tokenUrl" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The Token Url.</kc-tooltip>
|
<kc-tooltip>{{:: 'token-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="userInfoUrl">Logout Url</label>
|
<label class="col-md-2 control-label" for="userInfoUrl">{{:: 'logout-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="logoutUrl" type="text" ng-model="identityProvider.config.logoutUrl">
|
<input class="form-control" id="logoutUrl" type="text" ng-model="identityProvider.config.logoutUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>End session endpoint to use to logout user from external IDP.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.logout-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="backchannelSupported">Backchannel Logout</label>
|
<label class="col-sm-2 control-label" for="backchannelSupported">{{:: 'backchannel-logout' | translate}}</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue />
|
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Does the external IDP support backchannel logout?" class="fa fa-info-circle"></span>
|
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'backchannel-logout.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="userInfoUrl">User Info Url</label>
|
<label class="col-md-2 control-label" for="userInfoUrl">{{:: 'user-info-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="userInfoUrl" type="text" ng-model="identityProvider.config.userInfoUrl">
|
<input class="form-control" id="userInfoUrl" type="text" ng-model="identityProvider.config.userInfoUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The User Info Url. This is optional.</kc-tooltip>
|
<kc-tooltip>{{:: 'user-info-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="clientId"><span class="required">*</span> Client ID</label>
|
<label class="col-md-2 control-label" for="clientId"><span class="required">*</span> {{:: 'client-id' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.clientId" required>
|
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.clientId" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The client or client identifier registered withing the identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.client-id.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="clientSecret"><span class="required">*</span> Client Secret</label>
|
<label class="col-md-2 control-label" for="clientSecret"><span class="required">*</span> {{:: 'client-secret' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="clientSecret" type="password" ng-model="identityProvider.config.clientSecret" ng-show="hidePassword" required>
|
<input class="form-control" id="clientSecret" type="password" ng-model="identityProvider.config.clientSecret" ng-show="hidePassword" required>
|
||||||
<input class="form-control" id="clientSecret" type="text" ng-model="identityProvider.config.clientSecret" ng-show="!hidePassword" required>
|
<input class="form-control" id="clientSecret" type="text" ng-model="identityProvider.config.clientSecret" ng-show="!hidePassword" required>
|
||||||
<a href="" ng-click="showPassword(false)" class="link" ng-show="hidePassword">Show Secret</a>
|
<a href="" ng-click="showPassword(false)" class="link" ng-show="hidePassword">{{:: 'show-secret' | translate}}</a>
|
||||||
<a href="" ng-click="showPassword(true);" ng-show="!hidePassword">Hide Secret</a>
|
<a href="" ng-click="showPassword(true);" ng-show="!hidePassword">{{:: 'hide-secret' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The client or client secret registered withing the identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'client-secret.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="issuer">Issuer </label>
|
<label class="col-md-2 control-label" for="issuer">{{:: 'issuer' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="issuer" type="text" ng-model="identityProvider.config.issuer">
|
<input class="form-control" id="issuer" type="text" ng-model="identityProvider.config.issuer">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The issuer identifier for the issuer of the response. If not provided, no validation will be performed.</kc-tooltip>
|
<kc-tooltip>{{:: 'issuer.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="defaultScope">Default Scopes </label>
|
<label class="col-md-2 control-label" for="defaultScope">{{:: 'default-scopes' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="defaultScope" type="text" ng-model="identityProvider.config.defaultScope">
|
<input class="form-control" id="defaultScope" type="text" ng-model="identityProvider.config.defaultScope">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.default-scopes.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="prompt">Prompt</label>
|
<label class="col-md-2 control-label" for="prompt">{{:: 'prompt' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="prompt" ng-model="identityProvider.config.prompt">
|
<select class="form-control" id="prompt" ng-model="identityProvider.config.prompt">
|
||||||
<option value="">unspecified</option>
|
<option value="">{{:: 'unspecified.option' | translate}}</option>
|
||||||
<option value="none">none</option>
|
<option value="none">{{:: 'none.option' | translate}}</option>
|
||||||
<option>consent</option>
|
<option>{{:: 'consent.option' | translate}}</option>
|
||||||
<option>login</option>
|
<option>{{:: 'login.option' | translate}}</option>
|
||||||
<option>select_account</option>
|
<option>{{:: 'select-account.option' | translate}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.</kc-tooltip>
|
<kc-tooltip>{{:: 'prompt.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="validateSignature">Validate Signatures</label>
|
<label class="col-md-2 control-label" for="validateSignature">{{:: 'validate-signatures' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.config.validateSignature" id="validateSignature" onoffswitchvalue />
|
<input ng-model="identityProvider.config.validateSignature" id="validateSignature" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable signature validation of external IDP signatures.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.validate-signatures.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix" data-ng-show="identityProvider.config.validateSignature == 'true'">
|
<div class="form-group clearfix" data-ng-show="identityProvider.config.validateSignature == 'true'">
|
||||||
<label class="col-md-2 control-label" for="publicKeySignatureVerifier">Validating Public Key</label>
|
<label class="col-md-2 control-label" for="publicKeySignatureVerifier">{{:: 'validating-public-key' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<textarea class="form-control" id="publicKeySignatureVerifier" ng-model="identityProvider.config.publicKeySignatureVerifier"/>
|
<textarea class="form-control" id="publicKeySignatureVerifier" ng-model="identityProvider.config.publicKeySignatureVerifier"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The public key in PEM format that must be used to verify external IDP signatures.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.validating-public-key.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset data-ng-show="newIdentityProvider">
|
<fieldset data-ng-show="newIdentityProvider">
|
||||||
<legend uncollapsed><span class="text">Import External IDP Config</span> <kc-tooltip>Allows you to load external IDP metadata from a config file or to download it from a URL.</kc-tooltip></legend>
|
<legend uncollapsed><span class="text">{{:: 'import-external-idp-config' | translate}}</span> <kc-tooltip>{{:: 'import-external-idp-config.tooltip' | translate}}</kc-tooltip></legend>
|
||||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||||
<label class="col-md-2 control-label" for="fromUrl">Import From Url</label>
|
<label class="col-md-2 control-label" for="fromUrl">{{:: 'import-from-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
|
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Import metadata from a remote IDP discovery descriptor.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.import-from-url.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6" data-ng-show="importUrl">
|
<div class="col-md-6" data-ng-show="importUrl">
|
||||||
<button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||||
<label class="col-md-2 control-label">Import From File</label>
|
<label class="col-md-2 control-label">{{:: 'import-from-file' | translate}}</label>
|
||||||
<kc-tooltip>Import metadata from a downloaded IDP discovery descriptor.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.import-from-file.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
<label for="import-file" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||||
</div>
|
</div>
|
||||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||||
|
@ -203,15 +203,15 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6" data-ng-show="importFile">
|
<div class="col-md-6" data-ng-show="importFile">
|
||||||
<button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2">
|
<div class="col-md-10 col-md-offset-2">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()" data-ng-disabled="!changed">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()" data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initSamlProvider()">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initSamlProvider()">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
|
||||||
<li>{{identityProvider.alias}}</li>
|
<li>{{identityProvider.alias}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -9,134 +9,134 @@
|
||||||
<form class="form-horizontal" name="realmForm" novalidate>
|
<form class="form-horizontal" name="realmForm" novalidate>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="redirectUri">Redirect URI</label>
|
<label class="col-md-2 control-label" for="redirectUri">{{:: 'redirect-uri' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The redirect uri to use when configuring the identity provider</kc-tooltip>
|
<kc-tooltip>{{:: 'redirect-uri.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="identifier"><span class="required">*</span> Alias</label>
|
<label class="col-md-2 control-label" for="identifier"><span class="required">*</span> {{:: 'alias' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="identifier" type="text" ng-model="identityProvider.alias" data-ng-readonly="!newIdentityProvider" required>
|
<input class="form-control" id="identifier" type="text" ng-model="identityProvider.alias" data-ng-readonly="!newIdentityProvider" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The alias unique identifies an identity provider and it is also used to build the redirect uri.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.alias.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
<label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch />
|
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable this identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
<label class="col-md-2 control-label" for="authenticateByDefault">{{:: 'authenticate-by-default' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch />
|
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Indicates if this provider should be tried by default for authentication even before displaying login screen</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.authenticate-by-default.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storeToken">Store Tokens</label>
|
<label class="col-md-2 control-label" for="storeToken">{{:: 'store-tokens' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch />
|
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable if tokens must be stored after authenticating users.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.store-tokens.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
<label class="col-md-2 control-label" for="storedTokensReadable">{{:: 'stored-tokens-readable' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch />
|
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable new users can read any stored tokens. This assigns the broker.read-token role.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.stored-tokens-readable.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="updateProfileFirstLoginMode">Update Profile on First Login</label>
|
<label class="col-md-2 control-label" for="updateProfileFirstLoginMode">{{:: 'update-profile-on-first-login' | translate}}</label>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div>
|
<div>
|
||||||
<select id="updateProfileFirstLoginMode" ng-model="identityProvider.updateProfileFirstLoginMode" class="form-control">
|
<select id="updateProfileFirstLoginMode" ng-model="identityProvider.updateProfileFirstLoginMode" class="form-control">
|
||||||
<option value="on">On</option>
|
<option value="on">{{:: 'on' | translate}}</option>
|
||||||
<option value="missing">On missing info</option>
|
<option value="missing">{{:: 'on-missing-info' | translate}}</option>
|
||||||
<option value="off">Off</option>
|
<option value="off">{{:: 'off' | translate}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Define under which conditions must user update his profile right after the first login.</kc-tooltip>
|
<kc-tooltip>{{:: 'update-profile-on-first-login.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="trustEmail">Trust email</label>
|
<label class="col-md-2 control-label" for="trustEmail">{{:: 'trust-email' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.trustEmail" name="identityProvider.trustEmail" id="trustEmail" onoffswitch />
|
<input ng-model="identityProvider.trustEmail" name="identityProvider.trustEmail" id="trustEmail" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>If enabled then email provided by this provider is not verified even if verification is enabled for the realm.</kc-tooltip>
|
<kc-tooltip>{{:: 'trust-email.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="guiOrder">GUI order</label>
|
<label class="col-md-2 control-label" for="guiOrder">{{:: 'gui-order' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Number defining order of the provider in GUI (eg. on Login page).</kc-tooltip>
|
<kc-tooltip>{{:: 'gui-order.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend uncollapsed><span class="text">SAML Config</span> <kc-tooltip>SAML SP and external IDP configuration.</kc-tooltip></legend>
|
<legend uncollapsed><span class="text">{{:: 'saml-config' | translate}}</span> <kc-tooltip>{{:: 'identity-provider.saml-config.tooltip' | translate}}</kc-tooltip></legend>
|
||||||
|
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="singleSignOnServiceUrl"><span class="required">*</span> Single Sign-On Service Url</label>
|
<label class="col-md-2 control-label" for="singleSignOnServiceUrl"><span class="required">*</span> {{:: 'single-signon-service-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="singleSignOnServiceUrl" type="text" ng-model="identityProvider.config.singleSignOnServiceUrl" required>
|
<input class="form-control" id="singleSignOnServiceUrl" type="text" ng-model="identityProvider.config.singleSignOnServiceUrl" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The Url that must be used to send authentication requests(SAML AuthnRequest).</kc-tooltip>
|
<kc-tooltip>{{:: 'saml.single-signon-service-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="singleSignOnServiceUrl">Single Logout Service Url</label>
|
<label class="col-md-2 control-label" for="singleSignOnServiceUrl">{{:: 'single-logout-service-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="singleLogoutServiceUrl" type="text" ng-model="identityProvider.config.singleLogoutServiceUrl">
|
<input class="form-control" id="singleLogoutServiceUrl" type="text" ng-model="identityProvider.config.singleLogoutServiceUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The Url that must be used to send logout requests.</kc-tooltip>
|
<kc-tooltip>{{:: 'saml.single-logout-service-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="backchannelSupported">Backchannel Logout</label>
|
<label class="col-sm-2 control-label" for="backchannelSupported">{{:: 'backchannel-logout' | translate}}</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue />
|
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Does the external IDP support backchannel logout?" class="fa fa-info-circle"></span>
|
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'backchannel-logout.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="nameIDPolicyFormat">NameID Policy Format</label>
|
<label class="col-md-2 control-label" for="nameIDPolicyFormat">{{:: 'nameid-policy-format' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<select id="nameIDPolicyFormat" ng-model="identityProvider.config.nameIDPolicyFormat"
|
<select id="nameIDPolicyFormat" ng-model="identityProvider.config.nameIDPolicyFormat"
|
||||||
ng-options="nameFormat.format as nameFormat.name for nameFormat in nameIdFormats">
|
ng-options="nameFormat.format as nameFormat.name for nameFormat in nameIdFormats">
|
||||||
</select>
|
</select>
|
||||||
<!-- <input class="form-control" id="nameIDPolicyFormat" type="text" ng-model="identityProvider.config.nameIDPolicyFormat"> -->
|
<!-- <input class="form-control" id="nameIDPolicyFormat" type="text" ng-model="identityProvider.config.nameIDPolicyFormat"> -->
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Specifies the URI reference corresponding to a name identifier format. Defaults to urn:oasis:names:tc:SAML:2.0:nameid-format:persistent.</kc-tooltip>
|
<kc-tooltip>{{:: 'nameid-policy-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="postBindingResponse">HTTP-POST Binding Response</label>
|
<label class="col-md-2 control-label" for="postBindingResponse">{{:: 'http-post-binding-response' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.config.postBindingResponse" id="postBindingResponse" onoffswitchvalue />
|
<input ng-model="identityProvider.config.postBindingResponse" id="postBindingResponse" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.</kc-tooltip>
|
<kc-tooltip>{{:: 'http-post-binding-response.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="postBindingAuthnRequest">HTTP-POST Binding for AuthnRequest</label>
|
<label class="col-md-2 control-label" for="postBindingAuthnRequest">{{:: 'http-post-binding-for-authn-request' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.config.postBindingAuthnRequest" id="postBindingAuthnRequest" onoffswitchvalue />
|
<input ng-model="identityProvider.config.postBindingAuthnRequest" id="postBindingAuthnRequest" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.</kc-tooltip>
|
<kc-tooltip>{{:: 'http-post-binding-for-authn-request.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="wantAuthnRequestsSigned">Want AuthnRequests Signed</label>
|
<label class="col-md-2 control-label" for="wantAuthnRequestsSigned">{{:: 'want-authn-requests-signed' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.config.wantAuthnRequestsSigned" id="wantAuthnRequestsSigned" name="wantAuthnRequestsSigned" onoffswitchvalue />
|
<input ng-model="identityProvider.config.wantAuthnRequestsSigned" id="wantAuthnRequestsSigned" name="wantAuthnRequestsSigned" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip> Indicates whether the identity provider expects signed a AuthnRequest.</kc-tooltip>
|
<kc-tooltip>{{:: 'want-authn-requests-signed.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="identityProvider.config.wantAuthnRequestsSigned == 'true'">
|
<div class="form-group" data-ng-show="identityProvider.config.wantAuthnRequestsSigned == 'true'">
|
||||||
<label class="col-md-2 control-label" for="signatureAlgorithm">Signature Algorithm</label>
|
<label class="col-md-2 control-label" for="signatureAlgorithm">{{:: 'signature-algorithm' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="signatureAlgorithm"
|
<select class="form-control" id="signatureAlgorithm"
|
||||||
|
@ -145,47 +145,47 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The signature algorithm to use to sign documents.</kc-tooltip>
|
<kc-tooltip>{{:: 'signature-algorithm.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="forceAuthn">Force Authentication</label>
|
<label class="col-md-2 control-label" for="forceAuthn">{{:: 'force-authentication' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.config.forceAuthn" id="forceAuthn" name="forceAuthn" onoffswitchvalue />
|
<input ng-model="identityProvider.config.forceAuthn" id="forceAuthn" name="forceAuthn" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip> Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.force-authentication.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="validateSignature">Validate Signature</label>
|
<label class="col-md-2 control-label" for="validateSignature">{{:: 'validate-signature' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.config.validateSignature" id="validateSignature" onoffswitchvalue />
|
<input ng-model="identityProvider.config.validateSignature" id="validateSignature" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable signature validation of SAML responses.</kc-tooltip>
|
<kc-tooltip>{{:: 'saml.validate-signature.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix" data-ng-show="identityProvider.config.validateSignature == 'true'">
|
<div class="form-group clearfix" data-ng-show="identityProvider.config.validateSignature == 'true'">
|
||||||
<label class="col-md-2 control-label" for="signingCertificate">Validating X509 Certificate</label>
|
<label class="col-md-2 control-label" for="signingCertificate">{{:: 'validating-x509-certificate' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<textarea class="form-control" id="signingCertificate" ng-model="identityProvider.config.signingCertificate"/>
|
<textarea class="form-control" id="signingCertificate" ng-model="identityProvider.config.signingCertificate"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The certificate in PEM format that must be used to check for signatures.</kc-tooltip>
|
<kc-tooltip>{{:: 'validating-x509-certificate.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset data-ng-show="newIdentityProvider">
|
<fieldset data-ng-show="newIdentityProvider">
|
||||||
<legend uncollapsed><span class="text">Import External IDP Config</span> <kc-tooltip>Allows you to load external IDP metadata from a config file or to download it from a URL.</kc-tooltip></legend>
|
<legend uncollapsed><span class="text">{{:: 'import-external-idp-config' | translate}}</span> <kc-tooltip>{{:: 'import-external-idp-config.tooltip' | translate}}</kc-tooltip></legend>
|
||||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||||
<label class="col-md-2 control-label" for="fromUrl">Import From Url</label>
|
<label class="col-md-2 control-label" for="fromUrl">{{:: 'import-from-url' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
|
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Import metadata from a remote IDP SAML entity descriptor.</kc-tooltip>
|
<kc-tooltip>{{:: 'saml.import-from-url.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-sm-4" data-ng-show="importUrl">
|
<div class="col-sm-4" data-ng-show="importUrl">
|
||||||
<button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||||
<label class="col-md-2 control-label">Import From File</label>
|
<label class="col-md-2 control-label">{{:: 'import-from-file' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
<label for="import-file" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||||
</div>
|
</div>
|
||||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||||
|
@ -193,15 +193,15 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-4" data-ng-show="importFile">
|
<div class="col-sm-4" data-ng-show="importFile">
|
||||||
<button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">Import</button>
|
<button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">{{:: 'import' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2">
|
<div class="col-md-10 col-md-offset-2">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()" data-ng-disabled="!changed">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()" data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
|
||||||
<li>{{identityProvider.alias}}</li>
|
<li>{{identityProvider.alias}}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -9,100 +9,100 @@
|
||||||
<form class="form-horizontal" name="realmForm" novalidate>
|
<form class="form-horizontal" name="realmForm" novalidate>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="redirectUri">Redirect URI</label>
|
<label class="col-md-2 control-label" for="redirectUri">{{:: 'redirect-uri' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The redirect uri to use when configuring the identity provider</kc-tooltip>
|
<kc-tooltip>{{:: 'redirect-uri.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="clientId"><span class="required">*</span> Client ID</label>
|
<label class="col-md-2 control-label" for="clientId"><span class="required">*</span> {{:: 'client-id' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.clientId" required>
|
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.clientId" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The client identifier registered withing the identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'social.client-id.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="clientSecret"><span class="required">*</span> Client Secret</label>
|
<label class="col-md-2 control-label" for="clientSecret"><span class="required">*</span> {{:: 'client-secret' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="clientSecret" type="password" ng-model="identityProvider.config.clientSecret" ng-show="hidePassword" required>
|
<input class="form-control" id="clientSecret" type="password" ng-model="identityProvider.config.clientSecret" ng-show="hidePassword" required>
|
||||||
<input class="form-control" id="clientSecret" type="text" ng-model="identityProvider.config.clientSecret" ng-show="!hidePassword" required>
|
<input class="form-control" id="clientSecret" type="text" ng-model="identityProvider.config.clientSecret" ng-show="!hidePassword" required>
|
||||||
<a href="" ng-click="showPassword(false)" class="link" ng-show="hidePassword">Show Secret</a>
|
<a href="" ng-click="showPassword(false)" class="link" ng-show="hidePassword">{{:: 'show-secret' | translate}}</a>
|
||||||
<a href="" ng-click="showPassword(true);" ng-show="!hidePassword">Hide Secret</a>
|
<a href="" ng-click="showPassword(true);" ng-show="!hidePassword">{{:: 'hide-secret' | translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The client secret registered withing the identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'social.client-secret.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-' + identityProvider.providerId + '-ext.html'"></div>
|
<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-' + identityProvider.providerId + '-ext.html'"></div>
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="defaultScope">Default Scopes </label>
|
<label class="col-md-2 control-label" for="defaultScope">{{:: 'default-scopes' | translate}} </label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="defaultScope" type="text" ng-model="identityProvider.config.defaultScope">
|
<input class="form-control" id="defaultScope" type="text" ng-model="identityProvider.config.defaultScope">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The scopes to be sent when asking for authorization. See documentation for possible values, separator and default value'.</kc-tooltip>
|
<kc-tooltip>{{:: 'social.default-scopes.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="enabled">Store Tokens</label>
|
<label class="col-md-2 control-label" for="enabled">{{:: 'store-tokens' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch />
|
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable if tokens must be stored after authenticating users.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.store-tokens.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
<label class="col-md-2 control-label" for="storedTokensReadable">{{:: 'stored-tokens-readable' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch />
|
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable new users can read any stored tokens. This assigns the broker.read-token role.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.stored-tokens-readable.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
<label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch />
|
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Enable/disable this identity provider.</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="updateProfileFirstLoginMode">Update Profile on First Login</label>
|
<label class="col-md-2 control-label" for="updateProfileFirstLoginMode">{{:: 'update-profile-on-first-login' | translate}}</label>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div>
|
<div>
|
||||||
<select id="updateProfileFirstLoginMode" ng-model="identityProvider.updateProfileFirstLoginMode" class="form-control">
|
<select id="updateProfileFirstLoginMode" ng-model="identityProvider.updateProfileFirstLoginMode" class="form-control">
|
||||||
<option value="on">On</option>
|
<option value="on">{{:: 'on' | translate}}</option>
|
||||||
<option value="missing">On missing info</option>
|
<option value="missing">{{:: 'on-missing-info' | translate}}</option>
|
||||||
<option value="off">Off</option>
|
<option value="off">{{:: 'off' | translate}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Define under which conditions must user update his profile right after the first login.</kc-tooltip>
|
<kc-tooltip>{{:: 'update-profile-on-first-login.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="trustEmail">Trust email</label>
|
<label class="col-md-2 control-label" for="trustEmail">{{:: 'trust-email' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.trustEmail" name="identityProvider.trustEmail" id="trustEmail" onoffswitch />
|
<input ng-model="identityProvider.trustEmail" name="identityProvider.trustEmail" id="trustEmail" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>If enabled then email provided by this provider is not verified even if verification is enabled for the realm.</kc-tooltip>
|
<kc-tooltip>{{:: 'trust-email.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
<label class="col-md-2 control-label" for="authenticateByDefault">{{:: 'authenticate-by-default' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch />
|
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Indicates if this provider should be tried by default for authentication even before displaying login screen</kc-tooltip>
|
<kc-tooltip>{{:: 'identity-provider.authenticate-by-default.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="guiOrder">GUI order</label>
|
<label class="col-md-2 control-label" for="guiOrder">{{:: 'gui-order' | translate}}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>Number defining order of the provider in GUI (eg. on Login page).</kc-tooltip>
|
<kc-tooltip>{{:: 'gui-order.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-10 col-md-offset-2">
|
<div class="col-md-10 col-md-offset-2">
|
||||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||||
<button kc-cancel data-ng-click="cancel()" data-ng-disabled="!changed">Cancel</button>
|
<button kc-cancel data-ng-click="cancel()" data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="form-group clearfix">
|
<div class="form-group clearfix">
|
||||||
<label class="col-md-2 control-label" for="clientId">Key <span class="required">*</span></label>
|
<label class="col-md-2 control-label" for="clientId">{{:: 'key' | translate}} <span class="required">*</span></label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.key" required>
|
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.key" required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>The Key obtained from Stack Overflow client registration.</kc-tooltip>
|
<kc-tooltip>{{:: 'stackoverflow.key.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
<h1>Identity Providers</h1>
|
<h1>{{:: 'identity-providers' | translate}}</h1>
|
||||||
|
|
||||||
<form name="realmForm" novalidate class="form-horizontal">
|
<form name="realmForm" novalidate class="form-horizontal">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div>
|
<div>
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<caption class="hidden">Table of identity providers</caption>
|
<caption class="hidden">{{:: 'table-of-identity-providers' | translate}}</caption>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="6" class="kc-table-actions">
|
<th colspan="6" class="kc-table-actions">
|
||||||
|
@ -13,17 +13,17 @@
|
||||||
<select class="form-control" ng-model="provider"
|
<select class="form-control" ng-model="provider"
|
||||||
ng-options="p.name group by p.groupName for p in allProviders track by p.id"
|
ng-options="p.name group by p.groupName for p in allProviders track by p.id"
|
||||||
data-ng-change="addProvider(provider); provider = null">
|
data-ng-change="addProvider(provider); provider = null">
|
||||||
<option value="" disabled selected>Add provider...</option>
|
<option value="" disabled selected>{{:: 'add-provider.placeholder' | translate}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr ng-show="configuredProviders.length > 0">
|
<tr ng-show="configuredProviders.length > 0">
|
||||||
<th>Name</th>
|
<th>{{:: 'name' | translate}}</th>
|
||||||
<th>Provider</th>
|
<th>{{:: 'provider' | translate}}</th>
|
||||||
<th>Enabled</th>
|
<th>{{:: 'enabled' | translate}}</th>
|
||||||
<th width="15%">GUI order</th>
|
<th width="15%">{{:: 'gui-order' | translate}}</th>
|
||||||
<th colspan="2">Actions</th>
|
<th colspan="2">{{:: 'actions' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody ng-show="configuredProviders.length > 0">
|
<tbody ng-show="configuredProviders.length > 0">
|
||||||
|
@ -32,13 +32,13 @@
|
||||||
<a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a>
|
<a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{identityProvider.providerId}}</td>
|
<td>{{identityProvider.providerId}}</td>
|
||||||
<td>{{identityProvider.enabled}}</td>
|
<td translate="{{identityProvider.enabled}}"></td>
|
||||||
<td>{{identityProvider.config.guiOrder}}</td>
|
<td>{{identityProvider.config.guiOrder}}</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Edit</button>
|
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{:: 'edit' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
<td class="kc-action-cell">
|
<td class="kc-action-cell">
|
||||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeIdentityProvider(identityProvider)">Delete</button>
|
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeIdentityProvider(identityProvider)">{{:: 'delete' | translate}}</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||||
|
|
||||||
<h1>Realms</h1>
|
<h1>{{:: 'realms' | translate}}</h1>
|
||||||
|
|
||||||
<table class="datatable table table-striped table-bordered">
|
<table class="datatable table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Realm</th>
|
<th>{{:: 'realm' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<th>IP Address</th>
|
<th>IP Address</th>
|
||||||
<th>Started</th>
|
<th>Started</th>
|
||||||
<th>Last Access</th>
|
<th>Last Access</th>
|
||||||
<th>Clients</th>
|
<th>{{:: 'clients' | translate}}</th>
|
||||||
<th data-ng-show="access.manageUsers">Action</th>
|
<th data-ng-show="access.manageUsers">Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
|
@ -1,48 +1,46 @@
|
||||||
<div data-ng-controller="ClientTabCtrl">
|
<div data-ng-controller="ClientTabCtrl">
|
||||||
|
|
||||||
<h1 data-ng-show="create">Add Client</h1>
|
<h1 data-ng-show="create">{{:: 'add-client' | translate}}</h1>
|
||||||
<h1 data-ng-hide="create">
|
<h1 data-ng-hide="create">
|
||||||
{{client.clientId|capitalize}}
|
{{client.clientId|capitalize}}
|
||||||
<i id="removeClient" class="pficon pficon-delete clickable" data-ng-show="access.manageClients" data-ng-click="removeClient()"></i>
|
<i id="removeClient" class="pficon pficon-delete clickable" data-ng-show="access.manageClients" data-ng-click="removeClient()"></i>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<ul class="nav nav-tabs nav-tabs-pf" data-ng-hide="create && !path[4]">
|
<ul class="nav nav-tabs nav-tabs-pf" data-ng-hide="create && !path[4]">
|
||||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">Settings</a></li>
|
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{:: 'settings' | translate}}</a></li>
|
||||||
<li ng-class="{active: path[4] == 'credentials'}" data-ng-show="!client.publicClient && client.protocol != 'saml'"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">Credentials</a></li>
|
<li ng-class="{active: path[4] == 'credentials'}" data-ng-show="!client.publicClient && client.protocol != 'saml'"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">{{:: 'credentials' | translate}}</a></li>
|
||||||
<li ng-class="{active: path[4] == 'saml'}" data-ng-show="client.protocol == 'saml' && (client.attributes['saml.client.signature'] == 'true' || client.attributes['saml.encrypt'] == 'true')"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">SAML Keys</a></li>
|
<li ng-class="{active: path[4] == 'saml'}" data-ng-show="client.protocol == 'saml' && (client.attributes['saml.client.signature'] == 'true' || client.attributes['saml.encrypt'] == 'true')"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">{{:: 'saml-keys' | translate}}</a></li>
|
||||||
<li ng-class="{active: path[4] == 'roles'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">Roles</a></li>
|
<li ng-class="{active: path[4] == 'roles'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">{{:: 'roles' | translate}}</a></li>
|
||||||
<li ng-class="{active: path[4] == 'mappers'}" data-ng-show="!client.bearerOnly">
|
<li ng-class="{active: path[4] == 'mappers'}" data-ng-show="!client.bearerOnly">
|
||||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a>
|
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">{{:: 'mappers' | translate}}</a>
|
||||||
<kc-tooltip>Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server.</kc-tooltip>
|
<kc-tooltip>{{:: 'mappers.tooltip' | translate}}</kc-tooltip>
|
||||||
</li>
|
</li>
|
||||||
<li ng-class="{active: path[4] == 'scope-mappings'}" data-ng-show="!client.bearerOnly">
|
<li ng-class="{active: path[4] == 'scope-mappings'}" data-ng-show="!client.bearerOnly">
|
||||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/scope-mappings">Scope</a>
|
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/scope-mappings">{{:: 'scope' | translate}}</a>
|
||||||
<kc-tooltip>Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client.</kc-tooltip>
|
<kc-tooltip>{{:: 'scope.tooltip' | translate}}</kc-tooltip>
|
||||||
</li>
|
</li>
|
||||||
<li ng-class="{active: path[4] == 'revocation'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/revocation">Revocation</a></li>
|
<li ng-class="{active: path[4] == 'revocation'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/revocation">{{:: 'revocation' | translate}}</a></li>
|
||||||
<!-- <li ng-class="{active: path[4] == 'identity-provider'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/identity-provider">Identity Provider</a></li> -->
|
<!-- <li ng-class="{active: path[4] == 'identity-provider'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/identity-provider">Identity Provider</a></li> -->
|
||||||
<li ng-class="{active: path[4] == 'sessions'}" data-ng-show="!client.bearerOnly">
|
<li ng-class="{active: path[4] == 'sessions'}" data-ng-show="!client.bearerOnly">
|
||||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/sessions">Sessions</a>
|
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/sessions">{{:: 'sessions' | translate}}</a>
|
||||||
<kc-tooltip>View active sessions for this client. Allows you to see which users are active and when they logged in.</kc-tooltip>
|
<kc-tooltip>{{:: 'sessions.tooltip' | translate}}</kc-tooltip>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li ng-class="{active: path[4] == 'offline-access'}" data-ng-show="!client.bearerOnly">
|
<li ng-class="{active: path[4] == 'offline-access'}" data-ng-show="!client.bearerOnly">
|
||||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/offline-access">Offline Access</a>
|
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/offline-access">{{:: 'offline-access' | translate}}</a>
|
||||||
<kc-tooltip>View offline sessions for this client. Allows you to see which users retrieve offline token and when they retrieve it.
|
<kc-tooltip>{{:: 'offline-access.tooltip' | translate}}</kc-tooltip>
|
||||||
To revoke all tokens for the client, go to Revocation tab and set not before value to now.
|
|
||||||
</kc-tooltip>
|
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li ng-class="{active: path[4] == 'clustering'}" data-ng-show="!client.publicClient"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Clustering</a></li>
|
<li ng-class="{active: path[4] == 'clustering'}" data-ng-show="!client.publicClient"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">{{:: 'clustering' | translate}}</a></li>
|
||||||
|
|
||||||
<li ng-class="{active: path[4] == 'installation'}" data-ng-show="client.protocol != 'saml'">
|
<li ng-class="{active: path[4] == 'installation'}" data-ng-show="client.protocol != 'saml'">
|
||||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/installation">Installation</a>
|
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/installation">{{:: 'installation' | translate}}</a>
|
||||||
<kc-tooltip>Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your clients.</kc-tooltip>
|
<kc-tooltip>{{:: 'installation.tooltip' | translate}}</kc-tooltip>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li ng-class="{active: path[4] == 'service-account-roles'}" data-ng-show="client.serviceAccountsEnabled">
|
<li ng-class="{active: path[4] == 'service-account-roles'}" data-ng-show="client.serviceAccountsEnabled">
|
||||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/service-account-roles">Service Account Roles</a>
|
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/service-account-roles">{{:: 'service-account-roles' | translate}}</a>
|
||||||
<kc-tooltip>Allows you to authenticate role mappings for the service account dedicated to this client.</kc-tooltip>
|
<kc-tooltip>{{:: 'service-account-roles.tooltip' | translate}}</kc-tooltip>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
Loading…
Reference in a new issue