Merge branch 'master-upstream' into feature-lithuanian-locale
# Conflicts: # themes/src/main/resources/theme/base/account/messages/messages_en.properties # themes/src/main/resources/theme/base/account/theme.properties # themes/src/main/resources/theme/base/admin/theme.properties # themes/src/main/resources/theme/base/email/theme.properties # themes/src/main/resources/theme/base/login/theme.properties
This commit is contained in:
commit
e67f8c7a61
78 changed files with 3212 additions and 3881 deletions
|
@ -380,6 +380,7 @@
|
|||
var req = new XMLHttpRequest();
|
||||
req.open('POST', url, true);
|
||||
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
req.withCredentials = true;
|
||||
|
||||
if (kc.clientId && kc.clientSecret) {
|
||||
req.setRequestHeader('Authorization', 'Basic ' + btoa(kc.clientId + ':' + kc.clientSecret));
|
||||
|
|
|
@ -16,31 +16,21 @@
|
|||
-->
|
||||
|
||||
<assembly>
|
||||
|
||||
<id>auth-server-jboss-kc14</id>
|
||||
<id>fuse-adapter-dist</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
<format>tar.gz</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.3.1.Final</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>**/*.sh</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.3.1.Final</outputDirectory>
|
||||
<directory>${project.build.directory}/system</directory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
<include>*/**</include>
|
||||
</includes>
|
||||
<fileMode>0755</fileMode>
|
||||
<outputDirectory>system</outputDirectory>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
</assembly>
|
||||
</assembly>
|
173
distribution/adapters/fuse-adapter-zip/pom.xml
Normal file
173
distribution/adapters/fuse-adapter-zip/pom.xml
Normal file
|
@ -0,0 +1,173 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>keycloak-parent</artifactId>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<relativePath>../../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>keycloak-fuse-adapter-dist</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Keycloak Fuse Adapter Distro</name>
|
||||
<description/>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-osgi-features</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>xml</type>
|
||||
<classifier>features</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-osgi-thirdparty</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bouncycastle</groupId>
|
||||
<artifactId>bcprov-jdk15on</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bouncycastle</groupId>
|
||||
<artifactId>bcpkix-jdk15on</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.module</groupId>
|
||||
<artifactId>jackson-module-jaxb-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.jaxrs</groupId>
|
||||
<artifactId>jackson-jaxrs-base</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.jaxrs</groupId>
|
||||
<artifactId>jackson-jaxrs-json-provider</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jboss.logging</groupId>
|
||||
<artifactId>jboss-logging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-authz-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-adapter-spi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-adapter-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-osgi-adapter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-jetty-adapter-spi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-jetty-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-jetty81-adapter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-osgi-jaas</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-jetty92-adapter</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-dependencies</id>
|
||||
<phase>prepare-package</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/system</outputDirectory>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>false</overWriteSnapshots>
|
||||
<overWriteIfNewer>true</overWriteIfNewer>
|
||||
<useRepositoryLayout>true</useRepositoryLayout>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>assemble</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>assembly.xml</descriptor>
|
||||
</descriptors>
|
||||
<outputDirectory>target</outputDirectory>
|
||||
<workDirectory>target/assembly/work</workDirectory>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
<modules>
|
||||
<module>as7-eap6-adapter</module>
|
||||
<module>fuse-adapter-zip</module>
|
||||
<module>jetty81-adapter-zip</module>
|
||||
<module>jetty91-adapter-zip</module>
|
||||
<module>jetty92-adapter-zip</module>
|
||||
|
|
|
@ -17,6 +17,10 @@
|
|||
|
||||
package org.keycloak.protocol;
|
||||
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.ProtocolMapperContainerModel;
|
||||
import org.keycloak.models.ProtocolMapperModel;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.provider.ConfiguredProvider;
|
||||
import org.keycloak.provider.Provider;
|
||||
import org.keycloak.provider.ProviderFactory;
|
||||
|
@ -30,4 +34,16 @@ public interface ProtocolMapper extends Provider, ProviderFactory<ProtocolMapper
|
|||
String getDisplayCategory();
|
||||
String getDisplayType();
|
||||
|
||||
/**
|
||||
* Called when instance of mapperModel is created/updated for this protocolMapper through admin endpoint
|
||||
*
|
||||
* @param session
|
||||
* @param realm
|
||||
* @param client client or clientTemplate
|
||||
* @param mapperModel
|
||||
* @throws ProtocolMapperConfigException if configuration provided in mapperModel is not valid
|
||||
*/
|
||||
default void validateConfig(KeycloakSession session, RealmModel realm, ProtocolMapperContainerModel client, ProtocolMapperModel mapperModel) throws ProtocolMapperConfigException {
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
* and other contributors as indicated by the @author tags.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.keycloak.protocol;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
public class ProtocolMapperConfigException extends Exception {
|
||||
|
||||
private Object[] parameters;
|
||||
|
||||
public ProtocolMapperConfigException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ProtocolMapperConfigException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public ProtocolMapperConfigException(String message, Object ... parameters) {
|
||||
super(message);
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public Object[] getParameters() {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public void setParameters(Object[] parameters) {
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,387 +0,0 @@
|
|||
/*
|
||||
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
* and other contributors as indicated by the @author tags.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.keycloak.storage.changeset;
|
||||
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.models.UserCredentialValueModel;
|
||||
import org.keycloak.models.entities.AbstractIdentifiableEntity;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
public class UserData {
|
||||
|
||||
private String id;
|
||||
private boolean idChanged;
|
||||
private String username;
|
||||
private boolean usernameChanged;
|
||||
private Long createdTimestamp;
|
||||
private boolean createdTimestampChanged;
|
||||
private String firstName;
|
||||
private boolean firstNameChanged;
|
||||
private String lastName;
|
||||
private boolean lastNameChanged;
|
||||
private String email;
|
||||
private boolean emailChanged;
|
||||
private boolean emailVerified;
|
||||
private boolean emailVerifiedChanged;
|
||||
private boolean totp;
|
||||
private boolean totpChanged;
|
||||
private boolean enabled;
|
||||
private boolean enabledChanged;
|
||||
|
||||
private Set<String> roleIds = new HashSet<>();
|
||||
private boolean rolesChanged;
|
||||
private Set<String> groupIds = new HashSet<>();
|
||||
private boolean groupsChanged;
|
||||
|
||||
private MultivaluedHashMap<String, String> attributes = new MultivaluedHashMap<>();
|
||||
private boolean attributesChanged;
|
||||
private Set<String> requiredActions = new HashSet<>();
|
||||
private boolean requiredActionsChanged;
|
||||
private List<UserCredentialValueModel> credentials = new LinkedList<>();
|
||||
private boolean credentialsChanged;
|
||||
|
||||
public void rememberState() {
|
||||
original = new UserData();
|
||||
original.id = id;
|
||||
original.username = username;
|
||||
original.createdTimestamp = createdTimestamp;
|
||||
original.firstName = firstName;
|
||||
original.lastName = lastName;
|
||||
original.email = email;
|
||||
original.emailVerified = emailVerified;
|
||||
original.totp = totp;
|
||||
original.enabled = enabled;
|
||||
original.attributes.putAll(attributes);
|
||||
original.requiredActions.addAll(requiredActions);
|
||||
original.credentials.addAll(credentials);
|
||||
}
|
||||
|
||||
private UserData original = null;
|
||||
|
||||
public void clearChangeFlags() {
|
||||
original = null;
|
||||
idChanged = false;
|
||||
usernameChanged = false;
|
||||
createdTimestampChanged = false;
|
||||
firstNameChanged = false;
|
||||
lastNameChanged = false;
|
||||
emailChanged = false;
|
||||
emailVerifiedChanged = false;
|
||||
totpChanged = false;
|
||||
enabledChanged = false;
|
||||
rolesChanged = false;
|
||||
groupsChanged = false;
|
||||
attributesChanged = false;
|
||||
requiredActionsChanged = false;
|
||||
credentialsChanged = false;
|
||||
}
|
||||
|
||||
public boolean isChanged() {
|
||||
return !idChanged
|
||||
&& !usernameChanged
|
||||
&& !createdTimestampChanged
|
||||
&& !firstNameChanged
|
||||
&& !lastNameChanged
|
||||
&& !emailChanged
|
||||
&& !emailVerifiedChanged
|
||||
&& !totpChanged
|
||||
&& !enabledChanged
|
||||
&& !rolesChanged
|
||||
&& !groupsChanged
|
||||
&& !attributesChanged
|
||||
&& !requiredActionsChanged
|
||||
&& !credentialsChanged;
|
||||
}
|
||||
|
||||
public boolean isIdChanged() {
|
||||
return idChanged;
|
||||
}
|
||||
|
||||
public boolean isUsernameChanged() {
|
||||
return usernameChanged;
|
||||
}
|
||||
|
||||
public boolean isCreatedTimestampChanged() {
|
||||
return createdTimestampChanged;
|
||||
}
|
||||
|
||||
public boolean isFirstNameChanged() {
|
||||
return firstNameChanged;
|
||||
}
|
||||
|
||||
public boolean isLastNameChanged() {
|
||||
return lastNameChanged;
|
||||
}
|
||||
|
||||
public boolean isEmailChanged() {
|
||||
return emailChanged;
|
||||
}
|
||||
|
||||
public boolean isEmailVerifiedChanged() {
|
||||
return emailVerifiedChanged;
|
||||
}
|
||||
|
||||
public boolean isTotpChanged() {
|
||||
return totpChanged;
|
||||
}
|
||||
|
||||
public boolean isEnabledChanged() {
|
||||
return enabledChanged;
|
||||
}
|
||||
|
||||
public boolean isRolesChanged() {
|
||||
return rolesChanged;
|
||||
}
|
||||
|
||||
public boolean isGroupsChanged() {
|
||||
return groupsChanged;
|
||||
}
|
||||
|
||||
public boolean isAttributesChanged() {
|
||||
return attributesChanged;
|
||||
}
|
||||
|
||||
public boolean isRequiredActionsChanged() {
|
||||
return requiredActionsChanged;
|
||||
}
|
||||
|
||||
public boolean isCredentialsChanged() {
|
||||
return credentialsChanged;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
idChanged = true;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
usernameChanged = true;
|
||||
}
|
||||
|
||||
public Long getCreatedTimestamp() {
|
||||
return createdTimestamp;
|
||||
}
|
||||
|
||||
public void setCreatedTimestamp(Long timestamp) {
|
||||
this.createdTimestamp = timestamp;
|
||||
createdTimestampChanged = true;
|
||||
}
|
||||
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
firstNameChanged = true;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
lastNameChanged = true;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
emailChanged = true;
|
||||
}
|
||||
|
||||
public boolean isEmailVerified() {
|
||||
return emailVerified;
|
||||
}
|
||||
|
||||
public void setEmailVerified(boolean emailVerified) {
|
||||
this.emailVerified = emailVerified;
|
||||
emailVerifiedChanged = true;
|
||||
}
|
||||
|
||||
public boolean isTotp() {
|
||||
return totp;
|
||||
}
|
||||
|
||||
public void setTotp(boolean totp) {
|
||||
this.totp = totp;
|
||||
totpChanged = true;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
enabledChanged = true;
|
||||
}
|
||||
|
||||
public Set<String> getRoleMappings() {
|
||||
return Collections.unmodifiableSet(roleIds);
|
||||
}
|
||||
|
||||
public void grantRole(String roleId) {
|
||||
if (roleIds.contains(roleId)) return;
|
||||
roleIds.add(roleId);
|
||||
rolesChanged = true;
|
||||
}
|
||||
|
||||
public void deleteRoleMapping(String roleId) {
|
||||
if (!roleIds.contains(roleId)) return;
|
||||
roleIds.remove(roleId);
|
||||
rolesChanged = true;
|
||||
}
|
||||
|
||||
public MultivaluedHashMap<String, String> getAttributes() {
|
||||
return attributes;
|
||||
}
|
||||
|
||||
public void setSingleAttribute(String name, String value) {
|
||||
attributes.putSingle(name, value);
|
||||
attributesChanged = true;
|
||||
|
||||
}
|
||||
public void setAttribute(String name, List<String> values) {
|
||||
attributes.put(name, values);
|
||||
attributesChanged = true;
|
||||
}
|
||||
public void removeAttribute(String name) {
|
||||
attributes.remove(name);
|
||||
attributesChanged = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Set<String> getRequiredActions() {
|
||||
return Collections.unmodifiableSet(requiredActions);
|
||||
}
|
||||
public void addRequiredAction(String action) {
|
||||
if (requiredActions.contains(action)) return;
|
||||
requiredActions.add(action);
|
||||
requiredActionsChanged = true;
|
||||
}
|
||||
public void removeRequiredAction(String action) {
|
||||
if (!requiredActions.contains(action)) return;
|
||||
requiredActions.remove(action);
|
||||
requiredActionsChanged = true;
|
||||
}
|
||||
|
||||
public List<UserCredentialValueModel> getCredentials() {
|
||||
return Collections.unmodifiableList(credentials);
|
||||
}
|
||||
|
||||
public void removeCredentialType(String type) {
|
||||
Iterator<UserCredentialValueModel> it = credentials.iterator();
|
||||
while (it.hasNext()) {
|
||||
if (it.next().getType().equals(type)) {
|
||||
it.remove();
|
||||
credentialsChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void removeCredentialDevice(String type, String device) {
|
||||
Iterator<UserCredentialValueModel> it = credentials.iterator();
|
||||
while (it.hasNext()) {
|
||||
UserCredentialValueModel next = it.next();
|
||||
if (next.getType().equals(type) && next.getDevice().equals(device)) {
|
||||
it.remove();
|
||||
credentialsChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setCredential(UserCredentialValueModel cred) {
|
||||
removeCredentialType(cred.getType());
|
||||
addCredential(cred);
|
||||
}
|
||||
public void addCredential(UserCredentialValueModel cred) {
|
||||
credentials.add(cred);
|
||||
credentialsChanged = true;
|
||||
}
|
||||
|
||||
public Set<String> getGroupIds() {
|
||||
return Collections.unmodifiableSet(groupIds);
|
||||
}
|
||||
|
||||
public void joinGroup(String groupId) {
|
||||
if (groupIds.contains(groupId)) return;
|
||||
groupIds.add(groupId);
|
||||
groupsChanged = true;
|
||||
}
|
||||
|
||||
public void leaveGroup(String groupId) {
|
||||
if (!groupIds.contains(groupId)) return;
|
||||
groupIds.remove(groupId);
|
||||
groupsChanged = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == this) return true;
|
||||
|
||||
if (this.id == null) return false;
|
||||
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
AbstractIdentifiableEntity that = (AbstractIdentifiableEntity) o;
|
||||
|
||||
if (!getId().equals(that.getId())) return false;
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return id!=null ? id.hashCode() : super.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%s [ id=%s ]", getClass().getSimpleName(), getId());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,340 +0,0 @@
|
|||
/*
|
||||
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
* and other contributors as indicated by the @author tags.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.keycloak.storage.changeset;
|
||||
|
||||
import org.keycloak.common.util.Time;
|
||||
import org.keycloak.hash.PasswordHashManager;
|
||||
import org.keycloak.models.ClientModel;
|
||||
import org.keycloak.models.GroupModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.OTPPolicy;
|
||||
import org.keycloak.models.PasswordPolicy;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.models.RoleContainerModel;
|
||||
import org.keycloak.models.RoleModel;
|
||||
import org.keycloak.models.UserCredentialModel;
|
||||
import org.keycloak.models.UserCredentialValueModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.utils.KeycloakModelUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
||||
* @version $Revision: 1 $
|
||||
*/
|
||||
public class UserDataAdapter implements UserModel {
|
||||
protected UserData userData;
|
||||
protected RealmModel realm;
|
||||
protected KeycloakSession session;
|
||||
protected Set<String> managedCredentialTypes;
|
||||
protected List<UserCredentialModel> updatedManagedCredentials = new LinkedList<>();
|
||||
|
||||
public UserDataAdapter(KeycloakSession session, RealmModel realm, UserData userData) {
|
||||
this.session = session;
|
||||
this.realm = realm;
|
||||
this.userData = userData;
|
||||
this.userData.rememberState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return userData.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsername() {
|
||||
return userData.getUsername();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUsername(String username) {
|
||||
userData.setUsername(username);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getCreatedTimestamp() {
|
||||
return userData.getCreatedTimestamp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCreatedTimestamp(Long timestamp) {
|
||||
userData.setCreatedTimestamp(timestamp);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return userData.isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOtpEnabled() {
|
||||
return userData.isTotp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
userData.setEnabled(enabled);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSingleAttribute(String name, String value) {
|
||||
userData.setSingleAttribute(name, value);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAttribute(String name, List<String> values) {
|
||||
userData.setAttribute(name, values);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAttribute(String name) {
|
||||
userData.removeAttribute(name);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFirstAttribute(String name) {
|
||||
return userData.getAttributes().getFirst(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getAttribute(String name) {
|
||||
return userData.getAttributes().get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<String>> getAttributes() {
|
||||
return userData.getAttributes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getRequiredActions() {
|
||||
return userData.getRequiredActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRequiredAction(String action) {
|
||||
userData.addRequiredAction(action);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeRequiredAction(String action) {
|
||||
userData.removeRequiredAction(action);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRequiredAction(RequiredAction action) {
|
||||
userData.addRequiredAction(action.name());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeRequiredAction(RequiredAction action) {
|
||||
userData.removeRequiredAction(action.name());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFirstName() {
|
||||
return userData.getFirstName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFirstName(String firstName) {
|
||||
userData.setFirstName(firstName);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLastName() {
|
||||
return userData.getLastName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLastName(String lastName) {
|
||||
userData.setLastName(lastName);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEmail() {
|
||||
return userData.getEmail();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEmail(String email) {
|
||||
userData.setEmail(email);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmailVerified() {
|
||||
return userData.isEmailVerified();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEmailVerified(boolean verified) {
|
||||
userData.setEmailVerified(verified);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOtpEnabled(boolean totp) {
|
||||
userData.setTotp(totp);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCredential(UserCredentialModel cred) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserCredentialValueModel> getCredentialsDirectly() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCredentialDirectly(UserCredentialValueModel cred) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<GroupModel> getGroups() {
|
||||
Set<String> groups = userData.getGroupIds();
|
||||
Set<GroupModel> set = new HashSet<>();
|
||||
for (String id : groups) {
|
||||
GroupModel group = realm.getGroupById(id);
|
||||
if (group != null) set.add(group);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void joinGroup(GroupModel group) {
|
||||
userData.joinGroup(group.getId());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void leaveGroup(GroupModel group) {
|
||||
userData.leaveGroup(group.getId());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMemberOf(GroupModel group) {
|
||||
Set<GroupModel> roles = getGroups();
|
||||
return KeycloakModelUtils.isMember(roles, group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFederationLink() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFederationLink(String link) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getServiceAccountClientLink() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setServiceAccountClientLink(String clientInternalId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RoleModel> getRealmRoleMappings() {
|
||||
Set<RoleModel> roleMappings = getRoleMappings();
|
||||
|
||||
Set<RoleModel> realmRoles = new HashSet<RoleModel>();
|
||||
for (RoleModel role : roleMappings) {
|
||||
RoleContainerModel container = role.getContainer();
|
||||
if (container instanceof RealmModel) {
|
||||
realmRoles.add(role);
|
||||
}
|
||||
}
|
||||
return realmRoles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RoleModel> getClientRoleMappings(ClientModel app) {
|
||||
Set<RoleModel> roleMappings = getRoleMappings();
|
||||
|
||||
Set<RoleModel> roles = new HashSet<RoleModel>();
|
||||
for (RoleModel role : roleMappings) {
|
||||
RoleContainerModel container = role.getContainer();
|
||||
if (container instanceof ClientModel) {
|
||||
ClientModel appModel = (ClientModel)container;
|
||||
if (appModel.getId().equals(app.getId())) {
|
||||
roles.add(role);
|
||||
}
|
||||
}
|
||||
}
|
||||
return roles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasRole(RoleModel role) {
|
||||
Set<RoleModel> roles = getRoleMappings();
|
||||
return KeycloakModelUtils.hasRole(roles, role);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void grantRole(RoleModel role) {
|
||||
userData.grantRole(role.getId());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RoleModel> getRoleMappings() {
|
||||
Set<String> roles = userData.getRoleMappings();
|
||||
Set<RoleModel> set = new HashSet<>();
|
||||
for (String id : roles) {
|
||||
RoleModel role = realm.getRoleById(id);
|
||||
if (role != null) set.add(role);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRoleMapping(RoleModel role) {
|
||||
userData.deleteRoleMapping(role.getId());
|
||||
}
|
||||
}
|
|
@ -132,6 +132,9 @@ public class IdpEmailVerificationAuthenticator extends AbstractIdpAuthenticator
|
|||
clientSession.setNote(IS_DIFFERENT_BROWSER, "true");
|
||||
}
|
||||
|
||||
// User successfully confirmed linking by email verification. His email was defacto verified
|
||||
existingUser.setEmailVerified(true);
|
||||
|
||||
context.setUser(existingUser);
|
||||
context.success();
|
||||
} else {
|
||||
|
|
|
@ -19,10 +19,12 @@ package org.keycloak.protocol.oidc.mappers;
|
|||
|
||||
import org.keycloak.models.ClientSessionModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.ProtocolMapperContainerModel;
|
||||
import org.keycloak.models.ProtocolMapperModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.UserSessionModel;
|
||||
import org.keycloak.models.utils.KeycloakModelUtils;
|
||||
import org.keycloak.protocol.ProtocolMapperConfigException;
|
||||
import org.keycloak.protocol.ProtocolMapperUtils;
|
||||
import org.keycloak.provider.ProviderConfigProperty;
|
||||
import org.keycloak.representations.AccessToken;
|
||||
|
|
|
@ -107,7 +107,7 @@ public class ClientResource {
|
|||
|
||||
@Path("protocol-mappers")
|
||||
public ProtocolMappersResource getProtocolMappers() {
|
||||
ProtocolMappersResource mappers = new ProtocolMappersResource(client, auth, adminEvent);
|
||||
ProtocolMappersResource mappers = new ProtocolMappersResource(realm, client, auth, adminEvent);
|
||||
ResteasyProviderFactory.getInstance().injectProperties(mappers);
|
||||
return mappers;
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ public class ClientTemplateResource {
|
|||
|
||||
@Path("protocol-mappers")
|
||||
public ProtocolMappersResource getProtocolMappers() {
|
||||
ProtocolMappersResource mappers = new ProtocolMappersResource(template, auth, adminEvent);
|
||||
ProtocolMappersResource mappers = new ProtocolMappersResource(realm, template, auth, adminEvent);
|
||||
ResteasyProviderFactory.getInstance().injectProperties(mappers);
|
||||
return mappers;
|
||||
}
|
||||
|
|
|
@ -20,14 +20,22 @@ import org.jboss.resteasy.annotations.cache.NoCache;
|
|||
import org.jboss.resteasy.spi.NotFoundException;
|
||||
import org.keycloak.events.admin.OperationType;
|
||||
import org.keycloak.events.admin.ResourceType;
|
||||
import org.keycloak.mappers.FederationConfigValidationException;
|
||||
import org.keycloak.mappers.UserFederationMapper;
|
||||
import org.keycloak.mappers.UserFederationMapperFactory;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.ModelDuplicateException;
|
||||
import org.keycloak.models.ProtocolMapperContainerModel;
|
||||
import org.keycloak.models.ProtocolMapperModel;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.models.UserFederationMapperModel;
|
||||
import org.keycloak.models.utils.ModelToRepresentation;
|
||||
import org.keycloak.models.utils.RepresentationToModel;
|
||||
import org.keycloak.protocol.ProtocolMapper;
|
||||
import org.keycloak.protocol.ProtocolMapperConfigException;
|
||||
import org.keycloak.representations.idm.ProtocolMapperRepresentation;
|
||||
import org.keycloak.services.ErrorResponse;
|
||||
import org.keycloak.services.ErrorResponseException;
|
||||
import org.keycloak.services.ServicesLogger;
|
||||
import org.keycloak.services.resources.admin.RealmAuth.Resource;
|
||||
|
||||
|
@ -44,8 +52,10 @@ import javax.ws.rs.core.MediaType;
|
|||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* Base resource for managing users
|
||||
|
@ -56,6 +66,8 @@ import java.util.List;
|
|||
public class ProtocolMappersResource {
|
||||
protected static final ServicesLogger logger = ServicesLogger.ROOT_LOGGER;
|
||||
|
||||
protected RealmModel realm;
|
||||
|
||||
protected ProtocolMapperContainerModel client;
|
||||
|
||||
protected RealmAuth auth;
|
||||
|
@ -68,7 +80,8 @@ public class ProtocolMappersResource {
|
|||
@Context
|
||||
protected KeycloakSession session;
|
||||
|
||||
public ProtocolMappersResource(ProtocolMapperContainerModel client, RealmAuth auth, AdminEventBuilder adminEvent) {
|
||||
public ProtocolMappersResource(RealmModel realm, ProtocolMapperContainerModel client, RealmAuth auth, AdminEventBuilder adminEvent) {
|
||||
this.realm = realm;
|
||||
this.auth = auth;
|
||||
this.client = client;
|
||||
this.adminEvent = adminEvent.resource(ResourceType.PROTOCOL_MAPPER);
|
||||
|
@ -119,6 +132,7 @@ public class ProtocolMappersResource {
|
|||
ProtocolMapperModel model = null;
|
||||
try {
|
||||
model = RepresentationToModel.toModel(rep);
|
||||
validateModel(model);
|
||||
model = client.addProtocolMapper(model);
|
||||
adminEvent.operation(OperationType.CREATE).resourcePath(uriInfo, model.getId()).representation(rep).success();
|
||||
|
||||
|
@ -146,6 +160,7 @@ public class ProtocolMappersResource {
|
|||
ProtocolMapperModel model = null;
|
||||
for (ProtocolMapperRepresentation rep : reps) {
|
||||
model = RepresentationToModel.toModel(rep);
|
||||
validateModel(model);
|
||||
model = client.addProtocolMapper(model);
|
||||
}
|
||||
adminEvent.operation(OperationType.CREATE).resourcePath(uriInfo).representation(reps).success();
|
||||
|
@ -216,6 +231,9 @@ public class ProtocolMappersResource {
|
|||
ProtocolMapperModel model = client.getProtocolMapperById(id);
|
||||
if (model == null) throw new NotFoundException("Model not found");
|
||||
model = RepresentationToModel.toModel(rep);
|
||||
|
||||
validateModel(model);
|
||||
|
||||
client.updateProtocolMapper(model);
|
||||
adminEvent.operation(OperationType.UPDATE).resourcePath(uriInfo).representation(rep).success();
|
||||
}
|
||||
|
@ -242,4 +260,18 @@ public class ProtocolMappersResource {
|
|||
|
||||
}
|
||||
|
||||
private void validateModel(ProtocolMapperModel model) {
|
||||
try {
|
||||
ProtocolMapper mapper = (ProtocolMapper)session.getKeycloakSessionFactory().getProviderFactory(ProtocolMapper.class, model.getProtocolMapper());
|
||||
if (mapper != null) {
|
||||
mapper.validateConfig(session, realm, client, model);
|
||||
}
|
||||
} catch (ProtocolMapperConfigException ex) {
|
||||
logger.error(ex.getMessage());
|
||||
Properties messages = AdminRoot.getMessages(session, realm, auth.getAuth().getToken().getLocale());
|
||||
throw new ErrorResponseException(ex.getMessage(), MessageFormat.format(messages.getProperty(ex.getMessage(), ex.getMessage()), ex.getParameters()),
|
||||
Response.Status.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -113,12 +113,17 @@
|
|||
<artifactId>xml-maven-plugin</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
<modules>
|
||||
<module>test-apps</module>
|
||||
<module>test-utils</module>
|
||||
<module>servers</module>
|
||||
<module>tests</module>
|
||||
</modules>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:4.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:4.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
|
|
@ -17,12 +17,8 @@
|
|||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:4.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:4.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
@ -47,7 +43,7 @@
|
|||
<xsl:param name="pool.prefill" select="'true'"/>
|
||||
|
||||
<xsl:variable name="newDatasourceDefinition">
|
||||
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" use-java-context="true">
|
||||
<datasource jndi-name="java:jboss/datasources/KeycloakDS" jta="false" pool-name="KeycloakDS" use-java-context="true">
|
||||
<connection-url>
|
||||
<xsl:value-of select="$jdbc.url"/>
|
||||
</connection-url>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
<assembly>
|
||||
|
||||
<id>auth-server-jboss-kc14</id>
|
||||
<id>auth-server-jboss-${migrated.auth.server.version}</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
|
@ -28,14 +28,14 @@
|
|||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.4.0.Final</outputDirectory>
|
||||
<outputDirectory>keycloak-${migrated.auth.server.version}</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>**/*.sh</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.4.0.Final</outputDirectory>
|
||||
<outputDirectory>keycloak-${migrated.auth.server.version}</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
</includes>
|
|
@ -1,20 +1,20 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
@ -25,231 +25,195 @@
|
|||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-migration-servers</artifactId>
|
||||
<artifactId>integration-arquillian-migration-server</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Migration Servers</name>
|
||||
<name>Migration Server</name>
|
||||
|
||||
<properties>
|
||||
<keycloak.server.home>${project.build.directory}/unpacked/keycloak-${migrated.auth.server.version}</keycloak.server.home>
|
||||
<jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>migration-kc16</id>
|
||||
<modules>
|
||||
<module>wildfly_kc16</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>migration-kc15</id>
|
||||
<modules>
|
||||
<module>wildfly_kc15</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>migration-kc14</id>
|
||||
<modules>
|
||||
<module>wildfly_kc14</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>migration-kc13</id>
|
||||
<modules>
|
||||
<module>wildfly_kc13</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>migration-kc12</id>
|
||||
<modules>
|
||||
<module>wildfly_kc12</module>
|
||||
</modules>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>enforce-properties</id>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<rules>
|
||||
<requireProperty>
|
||||
<property>migrated.auth.server.version</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>jdbc.mvn.groupId</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>jdbc.mvn.artifactId</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>jdbc.mvn.version</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>keycloak.connectionsJpa.url</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>keycloak.connectionsJpa.user</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>keycloak.connectionsJpa.password</property>
|
||||
</requireProperty>
|
||||
</rules>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>unpack-server</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-server-dist</artifactId>
|
||||
<version>${migrated.auth.server.version}</version>
|
||||
<type>zip</type>
|
||||
<outputDirectory>${project.build.directory}/unpacked</outputDirectory>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>jdbc-driver</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>${jdbc.mvn.groupId}</groupId>
|
||||
<artifactId>${jdbc.mvn.artifactId}</artifactId>
|
||||
<version>${jdbc.mvn.version}</version>
|
||||
<type>jar</type>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${jdbc.mvn.driver.deployment.dir}</outputDirectory>
|
||||
<overWriteIfNewer>true</overWriteIfNewer>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>configure-wildfly-datasource</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>transform</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<transformationSets>
|
||||
<!-- create module.xml in modules -->
|
||||
<transformationSet>
|
||||
<dir>${keycloak.server.home}/modules/system/layers/base/com/h2database/h2/main</dir>
|
||||
<stylesheet>src/main/xslt/module.xsl</stylesheet>
|
||||
<includes>
|
||||
<include>module.xml</include>
|
||||
</includes>
|
||||
<outputDir>${jdbc.mvn.driver.deployment.dir}</outputDir>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>database</name>
|
||||
<value>${jdbc.mvn.artifactId}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>version</name>
|
||||
<value>${jdbc.mvn.version}</value>
|
||||
</parameter>
|
||||
</parameters>
|
||||
</transformationSet>
|
||||
<!-- add datasource to standalone.xml -->
|
||||
<transformationSet>
|
||||
<dir>${keycloak.server.home}/standalone/configuration</dir>
|
||||
<stylesheet>src/main/xslt/datasource.xsl</stylesheet>
|
||||
<includes>
|
||||
<include>standalone.xml</include>
|
||||
</includes>
|
||||
<outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>jdbc.url</name>
|
||||
<value>${keycloak.connectionsJpa.url}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>driver</name>
|
||||
<value>${jdbc.mvn.artifactId}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>username</name>
|
||||
<value>${keycloak.connectionsJpa.user}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>password</name>
|
||||
<value>${keycloak.connectionsJpa.password}</value>
|
||||
</parameter>
|
||||
</parameters>
|
||||
</transformationSet>
|
||||
<!-- add logger for org.hibernate.dialect.Dialect to standalone.xml-->
|
||||
<transformationSet>
|
||||
<dir>${keycloak.server.home}/standalone/configuration</dir>
|
||||
<stylesheet>src/main/xslt/add-dialect-logger.xsl</stylesheet>
|
||||
<includes>
|
||||
<include>standalone.xml</include>
|
||||
</includes>
|
||||
<outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
|
||||
</transformationSet>
|
||||
</transformationSets>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>create-zip</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>assembly.xml</descriptor>
|
||||
</descriptors>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>enforce-properties</id>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<rules>
|
||||
<requireProperty>
|
||||
<property>jdbc.mvn.groupId</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>jdbc.mvn.artifactId</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>jdbc.mvn.version</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>keycloak.connectionsJpa.url</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>keycloak.connectionsJpa.user</property>
|
||||
</requireProperty>
|
||||
<requireProperty>
|
||||
<property>keycloak.connectionsJpa.password</property>
|
||||
</requireProperty>
|
||||
</rules>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>unpack-server</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-server-dist</artifactId>
|
||||
<version>${server.version}</version>
|
||||
<type>zip</type>
|
||||
<outputDirectory>${project.build.directory}/unpacked</outputDirectory>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>jdbc-driver</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>${jdbc.mvn.groupId}</groupId>
|
||||
<artifactId>${jdbc.mvn.artifactId}</artifactId>
|
||||
<version>${jdbc.mvn.version}</version>
|
||||
<type>jar</type>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${jdbc.mvn.driver.deployment.dir}</outputDirectory>
|
||||
<overWriteIfNewer>true</overWriteIfNewer>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>configure-wildfly-datasource</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>transform</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<transformationSets>
|
||||
<!-- create module.xml in modules -->
|
||||
<transformationSet>
|
||||
<dir>${keycloak.server.home}/modules/system/layers/base/com/h2database/h2/main</dir>
|
||||
<stylesheet>src/main/xslt/module.xsl</stylesheet>
|
||||
<includes>
|
||||
<include>module.xml</include>
|
||||
</includes>
|
||||
<outputDir>${jdbc.mvn.driver.deployment.dir}</outputDir>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>database</name>
|
||||
<value>${jdbc.mvn.artifactId}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>version</name>
|
||||
<value>${jdbc.mvn.version}</value>
|
||||
</parameter>
|
||||
</parameters>
|
||||
</transformationSet>
|
||||
<!-- add datasource to standalone.xml -->
|
||||
<transformationSet>
|
||||
<dir>${keycloak.server.home}/standalone/configuration</dir>
|
||||
<stylesheet>src/main/xslt/datasource.xsl</stylesheet>
|
||||
<includes>
|
||||
<include>standalone.xml</include>
|
||||
</includes>
|
||||
<outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>jdbc.url</name>
|
||||
<value>${keycloak.connectionsJpa.url}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>driver</name>
|
||||
<value>${jdbc.mvn.artifactId}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>username</name>
|
||||
<value>${keycloak.connectionsJpa.user}</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>password</name>
|
||||
<value>${keycloak.connectionsJpa.password}</value>
|
||||
</parameter>
|
||||
</parameters>
|
||||
</transformationSet>
|
||||
<!-- add logger for org.hibernate.dialect.Dialect to standalone.xml-->
|
||||
<transformationSet>
|
||||
<dir>${keycloak.server.home}/standalone/configuration</dir>
|
||||
<stylesheet>src/main/xslt/add-dialect-logger.xsl</stylesheet>
|
||||
<includes>
|
||||
<include>standalone.xml</include>
|
||||
</includes>
|
||||
<outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
|
||||
</transformationSet>
|
||||
</transformationSets>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>create-zip</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>assembly.xml</descriptor>
|
||||
</descriptors>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</project>
|
||||
|
|
|
@ -17,17 +17,12 @@
|
|||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:3.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:3.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:datasources:'"/>
|
||||
|
||||
<!-- Remove keycloak datasource definition. -->
|
|
@ -17,9 +17,8 @@
|
|||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:m="urn:jboss:module:1.3"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan m">
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" />
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<assembly>
|
||||
|
||||
<id>auth-server-jboss-kc14</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.2.0.Final</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>**/*.sh</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.2.0.Final</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
</includes>
|
||||
<fileMode>0755</fileMode>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
</assembly>
|
|
@ -1,61 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<parent>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>integration-arquillian-migration-servers</artifactId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-server-wildfly-kc12</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Keycloak 1.2.0.Final on Wildfly</name>
|
||||
|
||||
<properties>
|
||||
<server.version>1.2.0.Final</server.version>
|
||||
<keycloak.server.home>${project.build.directory}/unpacked/keycloak-${server.version}</keycloak.server.home>
|
||||
<jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -1,62 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<parent>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>integration-arquillian-migration-servers</artifactId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-server-wildfly-kc13</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Keycloak 1.3.1.Final on Wildfly</name>
|
||||
|
||||
<properties>
|
||||
<server.version>1.3.1.Final</server.version>
|
||||
<keycloak.server.home>${project.build.directory}/unpacked/keycloak-${server.version}</keycloak.server.home>
|
||||
<jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
|
@ -1,45 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:logging:'"/>
|
||||
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='root-logger' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<logger category="org.hibernate.dialect.Dialect">
|
||||
<level name="ALL"/>
|
||||
</logger>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@* | node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,111 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:3.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:3.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:datasources:'"/>
|
||||
|
||||
<!-- Remove keycloak datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasource' and starts-with(namespace-uri(), $nsDS) and @pool-name='KeycloakDS']">
|
||||
</xsl:template>
|
||||
|
||||
<xsl:param name="jdbc.url" select="'jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE'"/>
|
||||
<xsl:param name="driver" select="'h2'"/>
|
||||
|
||||
<xsl:param name="username" select="'sa'"/>
|
||||
<xsl:param name="password" select="'sa'"/>
|
||||
|
||||
<xsl:param name="min.poolsize" select="'10'"/>
|
||||
<xsl:param name="max.poolsize" select="'50'"/>
|
||||
<xsl:param name="pool.prefill" select="'true'"/>
|
||||
|
||||
<xsl:variable name="newDatasourceDefinition">
|
||||
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
|
||||
<connection-url>
|
||||
<xsl:value-of select="$jdbc.url"/>
|
||||
</connection-url>
|
||||
<driver>
|
||||
<xsl:value-of select="$driver"/>
|
||||
</driver>
|
||||
<security>
|
||||
<user-name>
|
||||
<xsl:value-of select="$username"/>
|
||||
</user-name>
|
||||
<password>
|
||||
<xsl:value-of select="$password"/>
|
||||
</password>
|
||||
</security>
|
||||
<pool>
|
||||
<min-pool-size>
|
||||
<xsl:value-of select="$min.poolsize"/>
|
||||
</min-pool-size>
|
||||
<max-pool-size>
|
||||
<xsl:value-of select="$max.poolsize"/>
|
||||
</max-pool-size>
|
||||
<prefill>
|
||||
<xsl:value-of select="$pool.prefill"/>
|
||||
</prefill>
|
||||
</pool>
|
||||
</datasource>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="newDriverDefinition">
|
||||
<xsl:if test="$driver != 'h2'">
|
||||
<driver name="{$driver}" module="com.{$driver}" />
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Add new datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDatasourceDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Add new driver definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='drivers' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDriverDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,50 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:m="urn:jboss:module:1.3"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan m">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" />
|
||||
|
||||
|
||||
<xsl:param name="database" select="''"/>
|
||||
<xsl:param name="version" select="''"/>
|
||||
|
||||
<xsl:variable name="newModuleDefinition">
|
||||
<module xmlns="urn:jboss:module:1.3" name="com.{$database}">
|
||||
<resources>
|
||||
<resource-root path="{$database}-{$version}.jar"/>
|
||||
</resources>
|
||||
<dependencies>
|
||||
<module name="javax.api"/>
|
||||
<module name="javax.transaction.api"/>
|
||||
</dependencies>
|
||||
</module>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- clear whole document -->
|
||||
<xsl:template match="/*" />
|
||||
|
||||
<!-- Copy new module definition. -->
|
||||
<xsl:template match="/*">
|
||||
<xsl:copy-of select="$newModuleDefinition"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,61 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<parent>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>integration-arquillian-migration-servers</artifactId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-server-wildfly-kc14</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Keycloak 1.4.0.Final on Wildfly</name>
|
||||
|
||||
<properties>
|
||||
<server.version>1.4.0.Final</server.version>
|
||||
<keycloak.server.home>${project.build.directory}/unpacked/keycloak-${server.version}</keycloak.server.home>
|
||||
<jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -1,45 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:logging:'"/>
|
||||
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='root-logger' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<logger category="org.hibernate.dialect.Dialect">
|
||||
<level name="ALL"/>
|
||||
</logger>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@* | node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,111 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:3.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:3.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:datasources:'"/>
|
||||
|
||||
<!-- Remove keycloak datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasource' and starts-with(namespace-uri(), $nsDS) and @pool-name='KeycloakDS']">
|
||||
</xsl:template>
|
||||
|
||||
<xsl:param name="jdbc.url" select="'jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE'"/>
|
||||
<xsl:param name="driver" select="'h2'"/>
|
||||
|
||||
<xsl:param name="username" select="'sa'"/>
|
||||
<xsl:param name="password" select="'sa'"/>
|
||||
|
||||
<xsl:param name="min.poolsize" select="'10'"/>
|
||||
<xsl:param name="max.poolsize" select="'50'"/>
|
||||
<xsl:param name="pool.prefill" select="'true'"/>
|
||||
|
||||
<xsl:variable name="newDatasourceDefinition">
|
||||
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
|
||||
<connection-url>
|
||||
<xsl:value-of select="$jdbc.url"/>
|
||||
</connection-url>
|
||||
<driver>
|
||||
<xsl:value-of select="$driver"/>
|
||||
</driver>
|
||||
<security>
|
||||
<user-name>
|
||||
<xsl:value-of select="$username"/>
|
||||
</user-name>
|
||||
<password>
|
||||
<xsl:value-of select="$password"/>
|
||||
</password>
|
||||
</security>
|
||||
<pool>
|
||||
<min-pool-size>
|
||||
<xsl:value-of select="$min.poolsize"/>
|
||||
</min-pool-size>
|
||||
<max-pool-size>
|
||||
<xsl:value-of select="$max.poolsize"/>
|
||||
</max-pool-size>
|
||||
<prefill>
|
||||
<xsl:value-of select="$pool.prefill"/>
|
||||
</prefill>
|
||||
</pool>
|
||||
</datasource>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="newDriverDefinition">
|
||||
<xsl:if test="$driver != 'h2'">
|
||||
<driver name="{$driver}" module="com.{$driver}" />
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Add new datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDatasourceDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Add new driver definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='drivers' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDriverDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,50 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:m="urn:jboss:module:1.3"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan m">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" />
|
||||
|
||||
|
||||
<xsl:param name="database" select="''"/>
|
||||
<xsl:param name="version" select="''"/>
|
||||
|
||||
<xsl:variable name="newModuleDefinition">
|
||||
<module xmlns="urn:jboss:module:1.3" name="com.{$database}">
|
||||
<resources>
|
||||
<resource-root path="{$database}-{$version}.jar"/>
|
||||
</resources>
|
||||
<dependencies>
|
||||
<module name="javax.api"/>
|
||||
<module name="javax.transaction.api"/>
|
||||
</dependencies>
|
||||
</module>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- clear whole document -->
|
||||
<xsl:template match="/*" />
|
||||
|
||||
<!-- Copy new module definition. -->
|
||||
<xsl:template match="/*">
|
||||
<xsl:copy-of select="$newModuleDefinition"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,46 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<assembly>
|
||||
|
||||
<id>auth-server-jboss-kc15</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.5.1.Final</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>**/*.sh</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.5.1.Final</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
</includes>
|
||||
<fileMode>0755</fileMode>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
</assembly>
|
|
@ -1,61 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<parent>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>integration-arquillian-migration-servers</artifactId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-server-wildfly-kc15</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Keycloak 1.5.1.Final on Wildfly</name>
|
||||
|
||||
<properties>
|
||||
<server.version>1.5.1.Final</server.version>
|
||||
<keycloak.server.home>${project.build.directory}/unpacked/keycloak-${server.version}</keycloak.server.home>
|
||||
<jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -1,45 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:logging:'"/>
|
||||
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='root-logger' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<logger category="org.hibernate.dialect.Dialect">
|
||||
<level name="ALL"/>
|
||||
</logger>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@* | node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,111 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:3.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:3.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:datasources:'"/>
|
||||
|
||||
<!-- Remove keycloak datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasource' and starts-with(namespace-uri(), $nsDS) and @pool-name='KeycloakDS']">
|
||||
</xsl:template>
|
||||
|
||||
<xsl:param name="jdbc.url" select="'jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE'"/>
|
||||
<xsl:param name="driver" select="'h2'"/>
|
||||
|
||||
<xsl:param name="username" select="'sa'"/>
|
||||
<xsl:param name="password" select="'sa'"/>
|
||||
|
||||
<xsl:param name="min.poolsize" select="'10'"/>
|
||||
<xsl:param name="max.poolsize" select="'50'"/>
|
||||
<xsl:param name="pool.prefill" select="'true'"/>
|
||||
|
||||
<xsl:variable name="newDatasourceDefinition">
|
||||
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
|
||||
<connection-url>
|
||||
<xsl:value-of select="$jdbc.url"/>
|
||||
</connection-url>
|
||||
<driver>
|
||||
<xsl:value-of select="$driver"/>
|
||||
</driver>
|
||||
<security>
|
||||
<user-name>
|
||||
<xsl:value-of select="$username"/>
|
||||
</user-name>
|
||||
<password>
|
||||
<xsl:value-of select="$password"/>
|
||||
</password>
|
||||
</security>
|
||||
<pool>
|
||||
<min-pool-size>
|
||||
<xsl:value-of select="$min.poolsize"/>
|
||||
</min-pool-size>
|
||||
<max-pool-size>
|
||||
<xsl:value-of select="$max.poolsize"/>
|
||||
</max-pool-size>
|
||||
<prefill>
|
||||
<xsl:value-of select="$pool.prefill"/>
|
||||
</prefill>
|
||||
</pool>
|
||||
</datasource>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="newDriverDefinition">
|
||||
<xsl:if test="$driver != 'h2'">
|
||||
<driver name="{$driver}" module="com.{$driver}" />
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Add new datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDatasourceDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Add new driver definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='drivers' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDriverDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,50 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:m="urn:jboss:module:1.3"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan m">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" />
|
||||
|
||||
|
||||
<xsl:param name="database" select="''"/>
|
||||
<xsl:param name="version" select="''"/>
|
||||
|
||||
<xsl:variable name="newModuleDefinition">
|
||||
<module xmlns="urn:jboss:module:1.3" name="com.{$database}">
|
||||
<resources>
|
||||
<resource-root path="{$database}-{$version}.jar"/>
|
||||
</resources>
|
||||
<dependencies>
|
||||
<module name="javax.api"/>
|
||||
<module name="javax.transaction.api"/>
|
||||
</dependencies>
|
||||
</module>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- clear whole document -->
|
||||
<xsl:template match="/*" />
|
||||
|
||||
<!-- Copy new module definition. -->
|
||||
<xsl:template match="/*">
|
||||
<xsl:copy-of select="$newModuleDefinition"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,46 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<assembly>
|
||||
|
||||
<id>auth-server-jboss-kc16</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.6.1.Final</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>**/*.sh</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${keycloak.server.home}</directory>
|
||||
<outputDirectory>keycloak-1.6.1.Final</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
</includes>
|
||||
<fileMode>0755</fileMode>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
</assembly>
|
|
@ -1,61 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<parent>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>integration-arquillian-migration-servers</artifactId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-server-wildfly-kc16</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Keycloak 1.6.1.Final on Wildfly</name>
|
||||
|
||||
<properties>
|
||||
<server.version>1.6.1.Final</server.version>
|
||||
<keycloak.server.home>${project.build.directory}/unpacked/keycloak-${server.version}</keycloak.server.home>
|
||||
<jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -1,45 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:logging:'"/>
|
||||
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='root-logger' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<logger category="org.hibernate.dialect.Dialect">
|
||||
<level name="ALL"/>
|
||||
</logger>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@* | node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,111 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:j="urn:jboss:domain:3.0"
|
||||
xmlns:ds="urn:jboss:domain:datasources:3.0"
|
||||
xmlns:k="urn:jboss:domain:keycloak:1.1"
|
||||
xmlns:sec="urn:jboss:domain:security:1.2"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan j ds k sec">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
||||
|
||||
<xsl:variable name="nsDS" select="'urn:jboss:domain:datasources:'"/>
|
||||
|
||||
<!-- Remove keycloak datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasource' and starts-with(namespace-uri(), $nsDS) and @pool-name='KeycloakDS']">
|
||||
</xsl:template>
|
||||
|
||||
<xsl:param name="jdbc.url" select="'jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE'"/>
|
||||
<xsl:param name="driver" select="'h2'"/>
|
||||
|
||||
<xsl:param name="username" select="'sa'"/>
|
||||
<xsl:param name="password" select="'sa'"/>
|
||||
|
||||
<xsl:param name="min.poolsize" select="'10'"/>
|
||||
<xsl:param name="max.poolsize" select="'50'"/>
|
||||
<xsl:param name="pool.prefill" select="'true'"/>
|
||||
|
||||
<xsl:variable name="newDatasourceDefinition">
|
||||
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
|
||||
<connection-url>
|
||||
<xsl:value-of select="$jdbc.url"/>
|
||||
</connection-url>
|
||||
<driver>
|
||||
<xsl:value-of select="$driver"/>
|
||||
</driver>
|
||||
<security>
|
||||
<user-name>
|
||||
<xsl:value-of select="$username"/>
|
||||
</user-name>
|
||||
<password>
|
||||
<xsl:value-of select="$password"/>
|
||||
</password>
|
||||
</security>
|
||||
<pool>
|
||||
<min-pool-size>
|
||||
<xsl:value-of select="$min.poolsize"/>
|
||||
</min-pool-size>
|
||||
<max-pool-size>
|
||||
<xsl:value-of select="$max.poolsize"/>
|
||||
</max-pool-size>
|
||||
<prefill>
|
||||
<xsl:value-of select="$pool.prefill"/>
|
||||
</prefill>
|
||||
</pool>
|
||||
</datasource>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="newDriverDefinition">
|
||||
<xsl:if test="$driver != 'h2'">
|
||||
<driver name="{$driver}" module="com.{$driver}" />
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Add new datasource definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDatasourceDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Add new driver definition. -->
|
||||
<xsl:template match="//*[local-name()='subsystem' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='datasources' and starts-with(namespace-uri(), $nsDS)]
|
||||
/*[local-name()='drivers' and starts-with(namespace-uri(), $nsDS)]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="$newDriverDefinition"/>
|
||||
<xsl:apply-templates select="@* | node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Copy everything else. -->
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
|
@ -1,50 +0,0 @@
|
|||
<!--
|
||||
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xalan="http://xml.apache.org/xalan"
|
||||
xmlns:m="urn:jboss:module:1.3"
|
||||
version="2.0"
|
||||
exclude-result-prefixes="xalan m">
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" />
|
||||
|
||||
|
||||
<xsl:param name="database" select="''"/>
|
||||
<xsl:param name="version" select="''"/>
|
||||
|
||||
<xsl:variable name="newModuleDefinition">
|
||||
<module xmlns="urn:jboss:module:1.3" name="com.{$database}">
|
||||
<resources>
|
||||
<resource-root path="{$database}-{$version}.jar"/>
|
||||
</resources>
|
||||
<dependencies>
|
||||
<module name="javax.api"/>
|
||||
<module name="javax.transaction.api"/>
|
||||
</dependencies>
|
||||
</module>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- clear whole document -->
|
||||
<xsl:template match="/*" />
|
||||
|
||||
<!-- Copy new module definition. -->
|
||||
<xsl:template match="/*">
|
||||
<xsl:copy-of select="$newModuleDefinition"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
34
testsuite/integration-arquillian/test-utils/pom.xml
Normal file
34
testsuite/integration-arquillian/test-utils/pom.xml
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>integration-arquillian</artifactId>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>integration-arquillian-test-utils</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Test utils</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jboss.logging</groupId>
|
||||
<artifactId>jboss-logging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-configuration</groupId>
|
||||
<artifactId>commons-configuration</artifactId>
|
||||
<version>1.10</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,269 @@
|
|||
package org.keycloak.testsuite.util.junit;
|
||||
|
||||
import org.apache.commons.configuration.PropertiesConfiguration;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.runner.Description;
|
||||
import org.junit.runner.Result;
|
||||
import org.junit.runner.notification.Failure;
|
||||
import org.junit.runner.notification.RunListener;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.OutputKeys;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerConfigurationException;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
* Aggregates jUnit test results into a single report - XML file.
|
||||
*/
|
||||
public class AggregateResultsReporter extends RunListener {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(AggregateResultsReporter.class);
|
||||
|
||||
private final Document xml;
|
||||
private final File reportFile;
|
||||
private final boolean working;
|
||||
|
||||
private final AtomicInteger tests = new AtomicInteger(0);
|
||||
private final AtomicInteger errors = new AtomicInteger(0);
|
||||
private final AtomicInteger failures = new AtomicInteger(0);
|
||||
private final AtomicInteger ignored = new AtomicInteger(0);
|
||||
private final AtomicLong suiteStartTime = new AtomicLong(0L);
|
||||
|
||||
private final AtomicReference<Element> testsuite = new AtomicReference<Element>();
|
||||
|
||||
private final Map<String, Long> testTimes = new HashMap<String, Long>();
|
||||
|
||||
public AggregateResultsReporter() {
|
||||
boolean working = true;
|
||||
Document xml = null;
|
||||
try {
|
||||
xml = createEmptyDocument();
|
||||
} catch (ParserConfigurationException ex) {
|
||||
LOGGER.error("Failed to create XML DOM - reporting will not be done", ex);
|
||||
working = false;
|
||||
}
|
||||
|
||||
File reportFile = null;
|
||||
try {
|
||||
reportFile = createReportFile();
|
||||
} catch (Exception ex) {
|
||||
LOGGER.error("Failed to create log file - reporting will not be done", ex);
|
||||
working = false;
|
||||
}
|
||||
|
||||
this.working = working;
|
||||
this.xml = xml;
|
||||
this.reportFile = reportFile;
|
||||
}
|
||||
|
||||
private Document createEmptyDocument() throws ParserConfigurationException {
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
return builder.newDocument();
|
||||
}
|
||||
|
||||
private File createReportFile() throws Exception {
|
||||
PropertiesConfiguration config = new PropertiesConfiguration(System.getProperty("testsuite.constants"));
|
||||
config.setThrowExceptionOnMissing(true);
|
||||
|
||||
final File logDir = new File(config.getString("log-dir"));
|
||||
logDir.mkdirs();
|
||||
|
||||
final File reportFile = new File(logDir, "junit-report.xml").getAbsoluteFile();
|
||||
reportFile.createNewFile();
|
||||
|
||||
return reportFile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testRunStarted(Description description) throws Exception {
|
||||
if (working) {
|
||||
suiteStartTime.set(System.currentTimeMillis());
|
||||
|
||||
Element testsuite = xml.createElement("testsuite");
|
||||
|
||||
if (description.getChildren().size() == 1) {
|
||||
testsuite.setAttribute("name", safeString(description.getChildren().get(0).getDisplayName()));
|
||||
}
|
||||
|
||||
xml.appendChild(testsuite);
|
||||
this.testsuite.set(testsuite);
|
||||
writeXml();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testStarted(Description description) throws Exception {
|
||||
if (working) {
|
||||
testTimes.put(description.getDisplayName(), System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testFinished(Description description) throws Exception {
|
||||
if (working) {
|
||||
if (testTimes.containsKey(description.getDisplayName())) {
|
||||
testsuite.get().appendChild(createTestCase(description));
|
||||
writeXml();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testAssumptionFailure(Failure failure) {
|
||||
if (working) {
|
||||
ignored.incrementAndGet();
|
||||
|
||||
Element testcase = createTestCase(failure.getDescription());
|
||||
Element skipped = xml.createElement("skipped");
|
||||
skipped.setAttribute("message", safeString(failure.getMessage()));
|
||||
|
||||
testcase.appendChild(skipped);
|
||||
|
||||
testsuite.get().appendChild(testcase);
|
||||
writeXml();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testFailure(Failure failure) throws Exception {
|
||||
if (working) {
|
||||
if (failure.getDescription().getMethodName() == null) {
|
||||
// before class failed
|
||||
for (Description child : failure.getDescription().getChildren()) {
|
||||
// mark all methods failed
|
||||
testFailure(new Failure(child, failure.getException()));
|
||||
}
|
||||
} else {
|
||||
// normal failure
|
||||
Element testcase = createTestCase(failure.getDescription());
|
||||
|
||||
Element element;
|
||||
if (failure.getException() instanceof AssertionError) {
|
||||
failures.incrementAndGet();
|
||||
element = xml.createElement("failure");
|
||||
} else {
|
||||
errors.incrementAndGet();
|
||||
element = xml.createElement("error");
|
||||
}
|
||||
|
||||
testcase.appendChild(element);
|
||||
|
||||
element.setAttribute("type", safeString(failure.getException().getClass().getName()));
|
||||
element.setAttribute("message", safeString(failure.getMessage()));
|
||||
element.appendChild(xml.createCDATASection(safeString(failure.getTrace())));
|
||||
|
||||
testsuite.get().appendChild(testcase);
|
||||
writeXml();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testIgnored(Description description) throws Exception {
|
||||
if (working) {
|
||||
ignored.incrementAndGet();
|
||||
|
||||
Element testcase = createTestCase(description);
|
||||
|
||||
Element skipped = xml.createElement("skipped");
|
||||
skipped.setAttribute("message", safeString(description.getAnnotation(Ignore.class).value()));
|
||||
|
||||
testcase.appendChild(skipped);
|
||||
|
||||
testsuite.get().appendChild(testcase);
|
||||
writeXml();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testRunFinished(Result result) throws Exception {
|
||||
if (working) {
|
||||
writeXml();
|
||||
}
|
||||
}
|
||||
|
||||
private void writeXml() {
|
||||
Element testsuite = this.testsuite.get();
|
||||
|
||||
testsuite.setAttribute("tests", Integer.toString(tests.get()));
|
||||
testsuite.setAttribute("errors", Integer.toString(errors.get()));
|
||||
testsuite.setAttribute("skipped", Integer.toString(ignored.get()));
|
||||
testsuite.setAttribute("failures", Integer.toString(failures.get()));
|
||||
testsuite.setAttribute("time", computeTestTime(suiteStartTime.get()));
|
||||
|
||||
try {
|
||||
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(reportFile, false), Charset.forName("UTF-8")));
|
||||
try {
|
||||
Transformer t = TransformerFactory.newInstance().newTransformer();
|
||||
t.setOutputProperty(OutputKeys.INDENT, "yes");
|
||||
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
|
||||
t.transform(new DOMSource(xml), new StreamResult(writer));
|
||||
} catch (TransformerConfigurationException ex) {
|
||||
LOGGER.error("Misconfigured transformer", ex);
|
||||
} catch (TransformerException ex) {
|
||||
LOGGER.error("Unable to save XML file", ex);
|
||||
} finally {
|
||||
writer.close();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
LOGGER.warn("Unable to open report file", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private String computeTestTime(Long startTime) {
|
||||
if (startTime == null) {
|
||||
return "0";
|
||||
} else {
|
||||
long amount = System.currentTimeMillis() - startTime;
|
||||
return String.format("%.3f", amount / 1000F);
|
||||
}
|
||||
}
|
||||
|
||||
private Element createTestCase(Description description) {
|
||||
tests.incrementAndGet();
|
||||
|
||||
Element testcase = xml.createElement("testcase");
|
||||
|
||||
testcase.setAttribute("name", safeString(description.getMethodName()));
|
||||
testcase.setAttribute("classname", safeString(description.getClassName()));
|
||||
testcase.setAttribute("time", computeTestTime(testTimes.remove(description.getDisplayName())));
|
||||
|
||||
return testcase;
|
||||
}
|
||||
|
||||
private String safeString(String input) {
|
||||
if (input == null) {
|
||||
return "null";
|
||||
}
|
||||
|
||||
return input
|
||||
// first remove color coding (all of it)
|
||||
.replaceAll("\u001b\\[\\d+m", "")
|
||||
// then remove control characters that are not whitespaces
|
||||
.replaceAll("[\\p{Cntrl}&&[^\\p{Space}]]", "");
|
||||
}
|
||||
}
|
|
@ -36,8 +36,6 @@
|
|||
<exclude.console>-</exclude.console>
|
||||
<exclude.account>-</exclude.account>
|
||||
<exclude.client>-</exclude.client>
|
||||
<!--exclude migration tests by default, enabled by 'migration' profile in tests/pom.xml-->
|
||||
<exclude.migration>**/migration/**/*Test.java</exclude.migration>
|
||||
<!--exclude cluster tests by default, enabled by 'auth-server-*-cluster' profiles in tests/pom.xml-->
|
||||
<exclude.cluster>**/cluster/**/*Test.java</exclude.cluster>
|
||||
</properties>
|
||||
|
@ -102,7 +100,6 @@
|
|||
<exclude>${exclude.console}</exclude>
|
||||
<exclude>${exclude.account}</exclude>
|
||||
<exclude>${exclude.client}</exclude>
|
||||
<exclude>${exclude.migration}</exclude>
|
||||
<exclude>${exclude.cluster}</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
|
@ -137,6 +134,7 @@
|
|||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${skip.add.user.json}</skip>
|
||||
<outputDirectory>${auth.server.config.dir}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
|
|
|
@ -26,7 +26,7 @@ import org.jboss.arquillian.container.spi.Container;
|
|||
import org.jboss.arquillian.container.spi.ContainerRegistry;
|
||||
import org.jboss.arquillian.container.spi.event.StartContainer;
|
||||
import org.jboss.arquillian.container.spi.event.StartSuiteContainers;
|
||||
import org.jboss.arquillian.container.test.api.ContainerController;
|
||||
import org.jboss.arquillian.container.spi.event.StopContainer;
|
||||
import org.jboss.arquillian.core.api.Event;
|
||||
import org.jboss.arquillian.core.api.Instance;
|
||||
import org.jboss.arquillian.core.api.InstanceProducer;
|
||||
|
@ -52,11 +52,10 @@ public class AuthServerTestEnricher {
|
|||
@Inject
|
||||
private Instance<ContainerRegistry> containerRegistry;
|
||||
|
||||
@Inject
|
||||
private Instance<ContainerController> containerController;
|
||||
|
||||
@Inject
|
||||
private Event<StartContainer> startContainerEvent;
|
||||
@Inject
|
||||
private Event<StopContainer> stopContainerEvent;
|
||||
|
||||
private static final String AUTH_SERVER_CONTAINER_DEFAULT = "auth-server-undertow";
|
||||
private static final String AUTH_SERVER_CONTAINER_PROPERTY = "auth.server.container";
|
||||
|
@ -65,8 +64,8 @@ public class AuthServerTestEnricher {
|
|||
private static final String AUTH_SERVER_CLUSTER_PROPERTY = "auth.server.cluster";
|
||||
public static final boolean AUTH_SERVER_CLUSTER = Boolean.parseBoolean(System.getProperty(AUTH_SERVER_CLUSTER_PROPERTY, "false"));
|
||||
|
||||
private static final String MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY = "migrated.auth.server.container";
|
||||
public static final String MIGRATED_AUTH_SERVER_CONTAINER = System.getProperty(MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY); // == null if migration not enabled
|
||||
private static final String MIGRATION_PROPERTY = "auth.server.jboss.migration";
|
||||
private static final Boolean MIGRATION_ENABLED = Boolean.parseBoolean(System.getProperty(MIGRATION_PROPERTY));
|
||||
|
||||
@Inject
|
||||
@SuiteScoped
|
||||
|
@ -132,23 +131,19 @@ public class AuthServerTestEnricher {
|
|||
throw new RuntimeException(String.format("No auth server container matching '%sN' found in arquillian.xml.", authServerBackend));
|
||||
}
|
||||
|
||||
if (MIGRATED_AUTH_SERVER_CONTAINER != null) {
|
||||
if (MIGRATION_ENABLED) {
|
||||
// init migratedAuthServerInfo
|
||||
if (MIGRATED_AUTH_SERVER_CONTAINER.startsWith("migrated-auth-server-")) {
|
||||
for (ContainerInfo container : suiteContext.getContainers()) {
|
||||
// migrated auth server
|
||||
if (container.getQualifier().equals(MIGRATED_AUTH_SERVER_CONTAINER)) {
|
||||
updateWithAuthServerInfo(container);
|
||||
suiteContext.setMigratedAuthServerInfo(container);
|
||||
}
|
||||
for (ContainerInfo container : suiteContext.getContainers()) {
|
||||
// migrated auth server
|
||||
if (container.getQualifier().equals("auth-server-jboss-migration")) {
|
||||
updateWithAuthServerInfo(container);
|
||||
suiteContext.setMigratedAuthServerInfo(container);
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException(String.format("Value of %s should start with 'migrated-auth-server-' prefix.", MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY));
|
||||
}
|
||||
// validate setup
|
||||
if (suiteContext.getMigratedAuthServerInfo() == null) {
|
||||
throw new RuntimeException(String.format("Migration test was enabled but no auth server from which to migrate was activated. "
|
||||
+ "A container matching '%s' needs to be enabled in arquillian.xml.", MIGRATED_AUTH_SERVER_CONTAINER));
|
||||
+ "A container matching auth-server-jboss-migration needs to be enabled in arquillian.xml."));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -178,7 +173,8 @@ public class AuthServerTestEnricher {
|
|||
|
||||
public void stopMigratedContainer(@Observes(precedence = 1) StartSuiteContainers event) {
|
||||
if (suiteContext.isAuthServerMigrationEnabled()) {
|
||||
containerController.get().stop(suiteContext.getAuthServerInfo().getQualifier());
|
||||
log.info("## STOP old container: " + suiteContext.getMigratedAuthServerInfo().getQualifier());
|
||||
stopContainerEvent.fire(new StopContainer(suiteContext.getMigratedAuthServerInfo().getArquillianContainer()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -189,14 +185,6 @@ public class AuthServerTestEnricher {
|
|||
LogChecker.checkJBossServerLog(jbossHomePath);
|
||||
}
|
||||
}
|
||||
//
|
||||
// public void startAuthServerContainer(@Observes BeforeSuite event) {
|
||||
// startContainerEvent.fire(new StartContainer(suiteContext.getAuthServerInfo().getArquillianContainer()));
|
||||
// }
|
||||
//
|
||||
// public void stopAuthServerContainer(@Observes AfterSuite event) {
|
||||
// containerController.get().stop(suiteContext.getAuthServerInfo().getQualifier());
|
||||
// }
|
||||
|
||||
public void initializeTestContext(@Observes(precedence = 2) BeforeClass event) {
|
||||
TestContext testContext = new TestContext(suiteContext, event.getTestClass().getJavaClass());
|
||||
|
|
|
@ -98,6 +98,9 @@ public final class SuiteContext {
|
|||
for (ContainerInfo bInfo : getAuthServerBackendsInfo()) {
|
||||
containers += "Backend: " + bInfo + "\n";
|
||||
}
|
||||
if (isAuthServerMigrationEnabled()) {
|
||||
containers += "Migrated from: " + System.getProperty("migrated.auth.server.version") + "\n";
|
||||
}
|
||||
return "SUITE CONTEXT:\n"
|
||||
+ containers;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ public class MigrationTestExecutionDecider implements TestExecutionDecider {
|
|||
if (migrationTest && migrationAnnotation != null) {
|
||||
String versionFrom = migrationAnnotation.versionFrom();
|
||||
|
||||
if (migratedAuthServerVersion.equals(versionFrom)) {
|
||||
if (versionFrom.equals(migratedAuthServerVersion)) {
|
||||
return ExecutionDecision.execute();
|
||||
} else {
|
||||
return ExecutionDecision.dontExecute(method.getName() + "doesn't fit with migration version.");
|
||||
|
|
|
@ -17,69 +17,52 @@
|
|||
package org.keycloak.testsuite.migration;
|
||||
|
||||
import java.util.List;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.ClientsResource;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.RoleRepresentation;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.arquillian.migration.Migration;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:vramik@redhat.com">Vlastislav Ramik</a>
|
||||
*/
|
||||
public class MigrationTest extends AbstractKeycloakTest {
|
||||
|
||||
|
||||
private RealmResource realmResource;
|
||||
private RealmRepresentation realmRep;
|
||||
|
||||
@Override
|
||||
public void addTestRealms(List<RealmRepresentation> testRealms) {
|
||||
log.info("Adding no test realms for migration test. Test realm should be migrated from previous vesrion.");
|
||||
}
|
||||
|
||||
@Test
|
||||
@Migration(versionFrom = "1.6.1.Final")
|
||||
public void migration16Test() {
|
||||
RealmResource realmResource = adminClient.realms().realm("Migration");
|
||||
RealmRepresentation realmRep = realmResource.toRepresentation();
|
||||
assertEquals("Migration", realmRep.getRealm());
|
||||
|
||||
List<RoleRepresentation> realmRoles = realmResource.roles().list();
|
||||
assertEquals(1, realmRoles.size());
|
||||
assertEquals("offline_access", realmRoles.get(0).getName());
|
||||
|
||||
for (ClientRepresentation client : realmResource.clients().findAll()) {
|
||||
final String clientId = client.getClientId();
|
||||
switch (clientId) {
|
||||
case "realm-management":
|
||||
assertEquals(13, realmResource.clients().get(client.getId()).roles().list().size());
|
||||
break;
|
||||
case "security-admin-console":
|
||||
assertEquals(0, realmResource.clients().get(client.getId()).roles().list().size());
|
||||
break;
|
||||
case "broker":
|
||||
assertEquals(1, realmResource.clients().get(client.getId()).roles().list().size());
|
||||
break;
|
||||
case "account":
|
||||
assertEquals(2, realmResource.clients().get(client.getId()).roles().list().size());
|
||||
break;
|
||||
default:
|
||||
fail("Migrated realm contains unexpected client " + clientId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Before
|
||||
public void beforeMigrationTest() {
|
||||
realmResource = adminClient.realms().realm("Migration");
|
||||
realmRep = realmResource.toRepresentation();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Migration(versionFrom = "1.5.1.Final")
|
||||
@Ignore
|
||||
public void migration15Test() {
|
||||
for (RealmRepresentation realm : adminClient.realms().findAll()) {
|
||||
System.out.println(realm.getRealm());
|
||||
}
|
||||
@Migration(versionFrom = "1.9.8.Final")
|
||||
public void migration198Test() {
|
||||
Assert.assertNames(realmResource.roles().list(), "offline_access", "uma_authorization");
|
||||
Assert.assertNames(realmResource.clients().findAll(), "admin-cli", "realm-management", "security-admin-console", "broker", "account");
|
||||
|
||||
//TODO
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Assumed that there is only one migration test for each version and *remove*
|
||||
* 'Migration' realm from Keycloak after test to be able to run the rest
|
||||
* of the testsuite isolated afterward.
|
||||
*/
|
||||
@After
|
||||
public void afterMigrationTest() {
|
||||
log.info("removing '" + realmRep.getRealm() + "' realm");
|
||||
removeRealm(realmRep);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -150,11 +150,11 @@
|
|||
</configuration>
|
||||
</container>
|
||||
|
||||
<!-- PREVIOUS VERSIONS OF KEYCLOAK FOR MIGRATION TESTS -->
|
||||
<!-- PREVIOUS VERSION OF KEYCLOAK FOR MIGRATION TESTS -->
|
||||
|
||||
<container qualifier="auth-server-jboss-kc16" mode="manual" >
|
||||
<container qualifier="auth-server-jboss-migration" mode="manual" >
|
||||
<configuration>
|
||||
<property name="enabled">${auth.server.jboss.kc16}</property>
|
||||
<property name="enabled">${auth.server.jboss.migration}</property>
|
||||
<property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
|
||||
<property name="jbossHome">${keycloak.migration.home}</property>
|
||||
<property name="javaVmArguments">
|
||||
|
@ -164,62 +164,10 @@
|
|||
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
|
||||
-Dkeycloak.migration.realmName=Migration
|
||||
-Djboss.socket.binding.port-offset=${auth.server.port.offset}
|
||||
-Xms64m -Xmx512m -XX:MaxPermSize=256m
|
||||
${auth.server.memory.settings}
|
||||
</property>
|
||||
<property name="managementPort">${auth.server.management.port}</property>
|
||||
<property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
|
||||
</configuration>
|
||||
</container>
|
||||
|
||||
<container qualifier="auth-server-jboss-kc15" mode="manual" >
|
||||
<configuration>
|
||||
<property name="enabled">${auth.server.jboss.kc15}</property>
|
||||
<property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
|
||||
<property name="jbossHome">${keycloak.migration.home}</property>
|
||||
<property name="javaVmArguments">
|
||||
-Dkeycloak.migration.action=import
|
||||
-Dkeycloak.migration.provider=singleFile
|
||||
-Dkeycloak.migration.file=${keycloak.migration.file}
|
||||
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
|
||||
-Dkeycloak.migration.realmName=Migration
|
||||
-Djboss.socket.binding.port-offset=${auth.server.port.offset}
|
||||
-Xms64m -Xmx512m -XX:MaxPermSize=256m
|
||||
</property>
|
||||
<property name="managementPort">${auth.server.management.port}</property>
|
||||
<property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
|
||||
</configuration>
|
||||
</container>
|
||||
|
||||
<container qualifier="auth-server-jboss-kc14" mode="manual" >
|
||||
<configuration>
|
||||
<property name="enabled">${auth.server.jboss.kc14}</property>
|
||||
<property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
|
||||
<property name="jbossHome">${keycloak.migration.home}</property>
|
||||
<property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
|
||||
<property name="managementPort">${auth.server.management.port}</property>
|
||||
<property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
|
||||
</configuration>
|
||||
</container>
|
||||
|
||||
<container qualifier="auth-server-jboss-kc13" mode="manual" >
|
||||
<configuration>
|
||||
<property name="enabled">${auth.server.jboss.kc13}</property>
|
||||
<property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
|
||||
<property name="jbossHome">${keycloak.migration.home}</property>
|
||||
<property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
|
||||
<property name="managementPort">${auth.server.management.port}</property>
|
||||
<property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
|
||||
</configuration>
|
||||
</container>
|
||||
|
||||
<container qualifier="auth-server-jboss-kc12" mode="manual" >
|
||||
<configuration>
|
||||
<property name="enabled">${auth.server.jboss.kc12}</property>
|
||||
<property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
|
||||
<property name="jbossHome">${keycloak.migration.home}</property>
|
||||
<property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
|
||||
<property name="managementPort">${auth.server.management.port}</property>
|
||||
<property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
|
||||
<property name="startupTimeoutInSeconds">${auth.server.jboss.startup.timeout}</property>
|
||||
</configuration>
|
||||
</container>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,751 +0,0 @@
|
|||
{
|
||||
"id" : "9c3a9824-cc8b-46f6-8922-cd576a92850f",
|
||||
"realm" : "Migration",
|
||||
"notBefore" : 0,
|
||||
"accessTokenLifespan" : 300,
|
||||
"ssoSessionIdleTimeout" : 1800,
|
||||
"ssoSessionMaxLifespan" : 36000,
|
||||
"accessCodeLifespan" : 60,
|
||||
"accessCodeLifespanUserAction" : 300,
|
||||
"accessCodeLifespanLogin" : 1800,
|
||||
"enabled" : true,
|
||||
"sslRequired" : "external",
|
||||
"registrationAllowed" : false,
|
||||
"registrationEmailAsUsername" : false,
|
||||
"rememberMe" : false,
|
||||
"verifyEmail" : false,
|
||||
"resetPasswordAllowed" : false,
|
||||
"editUsernameAllowed" : false,
|
||||
"bruteForceProtected" : false,
|
||||
"maxFailureWaitSeconds" : 900,
|
||||
"minimumQuickLoginWaitSeconds" : 60,
|
||||
"waitIncrementSeconds" : 60,
|
||||
"quickLoginCheckMilliSeconds" : 1000,
|
||||
"maxDeltaTimeSeconds" : 43200,
|
||||
"failureFactor" : 30,
|
||||
"privateKey" : "MIIEpAIBAAKCAQEA29+/bYOEg+RFlDgKjX0nv+UMkV8X06E1XvRobuQjXKOV613VJIa1F/nGabXthkM3tC7DadJ5y1tBwhF+bJzMA4w38zNfJdjEp3DRND6ypUn0SJZrSw6l3u3w+s5uemgTWUZk463Xr3HbDxtnG+4t5GuHA2Oq6O2OLniVZKbDTpgF1HxzCBQiAxi2jNJm3tMlTdN6D/nV3Rwp2T1250T3ldkM3TDK/Nlup3oOejy+qRGEmh+omuABOOJ8icCULZ5S2AbiqfojP5ZN3WEpyCqcQvsdop4IawUbTDyy9BCE2K5CCZ6ZgQaSnpJZGUy91crPJXnI4tlg5Mh88l8aSrBLsQIDAQABAoIBAA5J7SPNzzfPBuKJ/c2SG5ox5W4xEthS+qfwFDVYqB+mFeEU2PwlsPEc71MBWq1GAwG3pEVlQzr+9DgLcP7X9b4pR52LchyAiM8k2sOda3ioZLKu68wV6JujNOznq3BTASblFztgmcqyCH1j14COKvdUMZL70CiQ/5NvjK3c1IZv5d/S9B7Qhd2o/6cO51xIodE87Lc4Pghq8cQ/AJJUJokyFtjkCpTNAYxcZgyiEMNbyjrbNMMEpiuspZ50eRbi7SOKOg6mSjwuTeK0cQ57JDuMhE/iyaMwh98uqSTccqeKS672z+7QCu89ce1YZMnWtjfwKEiIcTWB71pvy2gGwgECgYEA9Afv+5Zop4j1kmZvQcdr+UpW3Ia91nNelvlkMYPMrsC24xwrGhO9Hx76VxdBFCzDuYBIyOzbPLV7kFojSKmcWB6hb/S/j6eMd46ZetycrfH5sRpJHmqJpGZiARrWTLsFRNDwi2jwEl2qt3wkq/IBvuzNt9bwbnsajgRVSVWUBtECgYEA5qh+hl1f8R6KcrUro9kSSxjmlqzSIeAYNJ0VJkr2ZjRd984xTRSnUcuVJnbfNgfmywCB9s7QGgcMrs9BejKuP1bq2hnjjA1WOvz0Dq1FRw3wqYSZWHtVO2h/QDaKIcGjQ/PyWAyrOTBaL+bzKrNO66L7CQK63A4/Gj7QivFA7uECgYEAmYW81pyDbpLdW6MR72IUbZr1Fnu2RooCQhzXiccPKAmZhTudaiRs4H1OpSe+C4E2CSfJoo5QRtstx1zNwdLixxVOHu7s7OVNm5GcwQy1jUEkAuU0huwjd8fpdCR8GX23DNod2rbEAennktOJBpuTuZekvDl+vSK5TAsx1JcAL2ECgYB7rPTKjt6Wps2NW98eZ5ILejqJp/iz+TiBXYitk5wyiPmpmYGN1vkwPnymty5QBkSVrJwC/jlO+2CtiquNHgeYJr6eWytLOQt3bZJfHED9LFhSTKr8aoT06b7xa0z9dJpaIT9cPs7AR1DURn0z9Bjo9+aqmjAfNfRX2j5vgZRTgQKBgQC7+9bt4yZ0MAxJYTMVqU/LnyjPuDrgXZJYw5ZYO6r5xF0mdovE9+lY6I8OeAUg428Zk8mxMYeqOFUHF8nVBxofHrZbXR2eJxJLRO8f2GPRFYanA9MNe1Jc0WV5bi1gF+ifC0j//W1kGxCHJX1OeMSV/h8r3OaIHEwuu30ZLHFxRg==",
|
||||
"publicKey" : "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA29+/bYOEg+RFlDgKjX0nv+UMkV8X06E1XvRobuQjXKOV613VJIa1F/nGabXthkM3tC7DadJ5y1tBwhF+bJzMA4w38zNfJdjEp3DRND6ypUn0SJZrSw6l3u3w+s5uemgTWUZk463Xr3HbDxtnG+4t5GuHA2Oq6O2OLniVZKbDTpgF1HxzCBQiAxi2jNJm3tMlTdN6D/nV3Rwp2T1250T3ldkM3TDK/Nlup3oOejy+qRGEmh+omuABOOJ8icCULZ5S2AbiqfojP5ZN3WEpyCqcQvsdop4IawUbTDyy9BCE2K5CCZ6ZgQaSnpJZGUy91crPJXnI4tlg5Mh88l8aSrBLsQIDAQAB",
|
||||
"certificate" : "MIICoTCCAYkCBgFQs81zNDANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAlNaWdyYXRpb24wHhcNMTUxMDI5MTMzMTM3WhcNMjUxMDI5MTMzMzE3WjAUMRIwEAYDVQQDDAlNaWdyYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb379tg4SD5EWUOAqNfSe/5QyRXxfToTVe9Ghu5CNco5XrXdUkhrUX+cZpte2GQze0LsNp0nnLW0HCEX5snMwDjDfzM18l2MSncNE0PrKlSfRIlmtLDqXe7fD6zm56aBNZRmTjrdevcdsPG2cb7i3ka4cDY6ro7Y4ueJVkpsNOmAXUfHMIFCIDGLaM0mbe0yVN03oP+dXdHCnZPXbnRPeV2QzdMMr82W6neg56PL6pEYSaH6ia4AE44nyJwJQtnlLYBuKp+iM/lk3dYSnIKpxC+x2inghrBRtMPLL0EITYrkIJnpmBBpKeklkZTL3Vys8lecji2WDkyHzyXxpKsEuxAgMBAAEwDQYJKoZIhvcNAQELBQADggEBALaDK+wutEjdgY3Ux06Amp0k5qK16dz4jn+QKjdKPB1yThfzY1pisuyCUXPBlkn1OjB5ZvYl6ouwdNXgB8aeblbHZoyXh9ODeywi1xZd7pGxNXSfx0UzRk/YEEy0DAi9pxTyRYxiZ6/XJalS9PembTQvj+mVKqg1SDv7dyv4byvndEYSaUISrtGGrM3bb68PW4zInD793PJYWDSVxmEPOYtdgBJv4HAhPIJhjw15EOGlPv5QxW9P76OgISCutHaEe3UDP+TzIBBxYQFb1ZXA6ob3TFga78mFAkY4g98gEC11QSvZqhaRtLAz6PEisHRV+xDJVROgQ4Qew4qKgwE0gGE=",
|
||||
"codeSecret" : "32f8634c-2be2-4d4d-8118-f4f7fee80b9f",
|
||||
"roles" : {
|
||||
"client" : {
|
||||
"realm-management" : [ {
|
||||
"id" : "dad7b3a4-b533-47c8-aba5-32e6429865a2",
|
||||
"name" : "manage-identity-providers",
|
||||
"description" : "${role_manage-identity-providers}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "a1dd3971-3906-4f4a-b4cd-3a198d2d7150",
|
||||
"name" : "view-users",
|
||||
"description" : "${role_view-users}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "6c2d766f-cfa5-4cae-b1ca-81f1f9f242c8",
|
||||
"name" : "view-clients",
|
||||
"description" : "${role_view-clients}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "60bb5b3e-8067-43fe-803e-a7e367967c7c",
|
||||
"name" : "manage-realm",
|
||||
"description" : "${role_manage-realm}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "c55cb35a-2602-47a6-a628-fc5a55341426",
|
||||
"name" : "manage-users",
|
||||
"description" : "${role_manage-users}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "4dc834d0-766b-45aa-ab3b-b7b976baa65d",
|
||||
"name" : "realm-admin",
|
||||
"description" : "${role_realm-admin}",
|
||||
"composite" : true,
|
||||
"composites" : {
|
||||
"client" : {
|
||||
"realm-management" : [ "view-users", "manage-identity-providers", "view-clients", "manage-realm", "manage-users", "impersonation", "view-realm", "view-events", "manage-clients", "manage-events", "view-identity-providers" ]
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id" : "d444a98f-ab5e-4857-9300-496e04e498f5",
|
||||
"name" : "impersonation",
|
||||
"description" : "${role_impersonation}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "2f6f1407-f334-434f-becf-771e3ebb5625",
|
||||
"name" : "view-realm",
|
||||
"description" : "${role_view-realm}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "a40d3211-5244-4d92-80c0-0d3215580250",
|
||||
"name" : "manage-events",
|
||||
"description" : "${role_manage-events}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "d11c407e-504f-4923-b243-e794afa0247e",
|
||||
"name" : "view-events",
|
||||
"description" : "${role_view-events}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "3ef6ace4-4e87-4c30-a8b3-1f0df25868c6",
|
||||
"name" : "manage-clients",
|
||||
"description" : "${role_manage-clients}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "fa2a4972-b8d0-452e-8e13-d2cf7eaac7aa",
|
||||
"name" : "view-identity-providers",
|
||||
"description" : "${role_view-identity-providers}",
|
||||
"composite" : false
|
||||
} ],
|
||||
"security-admin-console" : [ ],
|
||||
"broker" : [ {
|
||||
"id" : "1bc5aeb4-1df1-4402-8195-e2a72f6dca30",
|
||||
"name" : "read-token",
|
||||
"description" : "${role_read-token}",
|
||||
"composite" : false
|
||||
} ],
|
||||
"account" : [ {
|
||||
"id" : "71b5b5ff-b372-41a1-a427-7883fa64a8c7",
|
||||
"name" : "manage-account",
|
||||
"description" : "${role_manage-account}",
|
||||
"composite" : false
|
||||
}, {
|
||||
"id" : "04daa556-8aeb-43ba-99c6-b393ec2a32d4",
|
||||
"name" : "view-profile",
|
||||
"description" : "${role_view-profile}",
|
||||
"composite" : false
|
||||
} ]
|
||||
}
|
||||
},
|
||||
"requiredCredentials" : [ "password" ],
|
||||
"otpPolicyType" : "totp",
|
||||
"otpPolicyAlgorithm" : "HmacSHA1",
|
||||
"otpPolicyInitialCounter" : 0,
|
||||
"otpPolicyDigits" : 6,
|
||||
"otpPolicyLookAheadWindow" : 1,
|
||||
"otpPolicyPeriod" : 30,
|
||||
"clientScopeMappings" : {
|
||||
"realm-management" : [ {
|
||||
"client" : "security-admin-console",
|
||||
"roles" : [ "realm-admin" ]
|
||||
} ]
|
||||
},
|
||||
"clients" : [ {
|
||||
"id" : "ba27336f-3f89-471d-98d2-b8856bd6dbf1",
|
||||
"clientId" : "realm-management",
|
||||
"name" : "${client_realm-management}",
|
||||
"surrogateAuthRequired" : false,
|
||||
"enabled" : true,
|
||||
"clientAuthenticatorType" : "client-secret",
|
||||
"secret" : "26aee4e9-8eec-421b-90a9-238538f5897a",
|
||||
"redirectUris" : [ ],
|
||||
"webOrigins" : [ ],
|
||||
"notBefore" : 0,
|
||||
"bearerOnly" : true,
|
||||
"consentRequired" : false,
|
||||
"serviceAccountsEnabled" : false,
|
||||
"directGrantsOnly" : false,
|
||||
"publicClient" : false,
|
||||
"frontchannelLogout" : false,
|
||||
"attributes" : { },
|
||||
"fullScopeAllowed" : false,
|
||||
"nodeReRegistrationTimeout" : 0,
|
||||
"protocolMappers" : [ {
|
||||
"id" : "5d56eba1-724e-4904-a8f8-86ca264a82cf",
|
||||
"name" : "family name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${familyName}",
|
||||
"config" : {
|
||||
"user.attribute" : "lastName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "family_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "18a30786-89f9-4744-8f36-4de811a591ae",
|
||||
"name" : "email",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${email}",
|
||||
"config" : {
|
||||
"user.attribute" : "email",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "email",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "4d1c4456-0c0d-49b9-bfba-c2c83645aeb2",
|
||||
"name" : "username",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${username}",
|
||||
"config" : {
|
||||
"user.attribute" : "username",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "preferred_username",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "1a19db43-2346-4a24-b6f0-1b8d7fc1353e",
|
||||
"name" : "role list",
|
||||
"protocol" : "saml",
|
||||
"protocolMapper" : "saml-role-list-mapper",
|
||||
"consentRequired" : false,
|
||||
"config" : {
|
||||
"single" : "false",
|
||||
"attribute.nameformat" : "Basic",
|
||||
"attribute.name" : "Role"
|
||||
}
|
||||
}, {
|
||||
"id" : "a18612f0-9eb3-4d81-af0c-b0749b83fbd3",
|
||||
"name" : "given name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${givenName}",
|
||||
"config" : {
|
||||
"user.attribute" : "firstName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "given_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "70c26044-c7fc-4090-98e1-670fef006e25",
|
||||
"name" : "full name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-full-name-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${fullName}",
|
||||
"config" : {
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true"
|
||||
}
|
||||
} ]
|
||||
}, {
|
||||
"id" : "3fdddd5e-0022-4f6d-8fdf-212266db7fd4",
|
||||
"clientId" : "security-admin-console",
|
||||
"name" : "${client_security-admin-console}",
|
||||
"baseUrl" : "/auth/admin/Migration/console/index.html",
|
||||
"surrogateAuthRequired" : false,
|
||||
"enabled" : true,
|
||||
"clientAuthenticatorType" : "client-secret",
|
||||
"secret" : "38ce8135-738d-4103-85ac-c3470ac8824d",
|
||||
"redirectUris" : [ "/auth/admin/Migration/console/*" ],
|
||||
"webOrigins" : [ ],
|
||||
"notBefore" : 0,
|
||||
"bearerOnly" : false,
|
||||
"consentRequired" : false,
|
||||
"serviceAccountsEnabled" : false,
|
||||
"directGrantsOnly" : false,
|
||||
"publicClient" : true,
|
||||
"frontchannelLogout" : false,
|
||||
"attributes" : { },
|
||||
"fullScopeAllowed" : false,
|
||||
"nodeReRegistrationTimeout" : 0,
|
||||
"protocolMappers" : [ {
|
||||
"id" : "be58fe30-b767-4566-9192-a4fa81fafa2c",
|
||||
"name" : "role list",
|
||||
"protocol" : "saml",
|
||||
"protocolMapper" : "saml-role-list-mapper",
|
||||
"consentRequired" : false,
|
||||
"config" : {
|
||||
"single" : "false",
|
||||
"attribute.nameformat" : "Basic",
|
||||
"attribute.name" : "Role"
|
||||
}
|
||||
}, {
|
||||
"id" : "c97523fd-fd4f-48d7-8937-bd434fa374fd",
|
||||
"name" : "given name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${givenName}",
|
||||
"config" : {
|
||||
"user.attribute" : "firstName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "given_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "2323a85d-2686-46d4-bea8-e36524920f2e",
|
||||
"name" : "email",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${email}",
|
||||
"config" : {
|
||||
"user.attribute" : "email",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "email",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "56f8a80e-9e99-4add-b918-b864ca3f6f5c",
|
||||
"name" : "username",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${username}",
|
||||
"config" : {
|
||||
"user.attribute" : "username",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "preferred_username",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "f9f51e8d-d5af-456c-be5a-3019fb8c0910",
|
||||
"name" : "family name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${familyName}",
|
||||
"config" : {
|
||||
"user.attribute" : "lastName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "family_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "3d8fbb0c-9058-4dde-b675-ca77a153ceb8",
|
||||
"name" : "full name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-full-name-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${fullName}",
|
||||
"config" : {
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true"
|
||||
}
|
||||
} ]
|
||||
}, {
|
||||
"id" : "068fcf1a-7048-43df-b3dd-e6c484e8b051",
|
||||
"clientId" : "broker",
|
||||
"name" : "${client_broker}",
|
||||
"surrogateAuthRequired" : false,
|
||||
"enabled" : true,
|
||||
"clientAuthenticatorType" : "client-secret",
|
||||
"secret" : "041b50a6-54b5-4cff-84ef-1b7c388d3395",
|
||||
"redirectUris" : [ ],
|
||||
"webOrigins" : [ ],
|
||||
"notBefore" : 0,
|
||||
"bearerOnly" : false,
|
||||
"consentRequired" : false,
|
||||
"serviceAccountsEnabled" : false,
|
||||
"directGrantsOnly" : false,
|
||||
"publicClient" : false,
|
||||
"frontchannelLogout" : false,
|
||||
"attributes" : { },
|
||||
"fullScopeAllowed" : false,
|
||||
"nodeReRegistrationTimeout" : 0,
|
||||
"protocolMappers" : [ {
|
||||
"id" : "57c6f779-c96b-4f03-b268-354af2a8731e",
|
||||
"name" : "email",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${email}",
|
||||
"config" : {
|
||||
"user.attribute" : "email",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "email",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "f17a7b9f-9363-44bd-8320-df36f22ca712",
|
||||
"name" : "given name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${givenName}",
|
||||
"config" : {
|
||||
"user.attribute" : "firstName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "given_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "ec1bf022-9e98-4f29-9bf0-f0a49bd844ad",
|
||||
"name" : "role list",
|
||||
"protocol" : "saml",
|
||||
"protocolMapper" : "saml-role-list-mapper",
|
||||
"consentRequired" : false,
|
||||
"config" : {
|
||||
"single" : "false",
|
||||
"attribute.nameformat" : "Basic",
|
||||
"attribute.name" : "Role"
|
||||
}
|
||||
}, {
|
||||
"id" : "0d54c616-326b-4fe7-bbfa-af9a28304dc5",
|
||||
"name" : "username",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${username}",
|
||||
"config" : {
|
||||
"user.attribute" : "username",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "preferred_username",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "89ce95b9-a268-4306-a1ad-86066d0cdd03",
|
||||
"name" : "family name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${familyName}",
|
||||
"config" : {
|
||||
"user.attribute" : "lastName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "family_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "8236274d-af69-4fc4-8804-a02d4af66157",
|
||||
"name" : "full name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-full-name-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${fullName}",
|
||||
"config" : {
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true"
|
||||
}
|
||||
} ]
|
||||
}, {
|
||||
"id" : "717b9e58-87ed-402d-a8f8-a37fd5e7c951",
|
||||
"clientId" : "account",
|
||||
"name" : "${client_account}",
|
||||
"baseUrl" : "/auth/realms/Migration/account",
|
||||
"surrogateAuthRequired" : false,
|
||||
"enabled" : true,
|
||||
"clientAuthenticatorType" : "client-secret",
|
||||
"secret" : "9ea62eb5-5478-454a-a479-4012f8967f9c",
|
||||
"defaultRoles" : [ "view-profile", "manage-account" ],
|
||||
"redirectUris" : [ "/auth/realms/Migration/account/*" ],
|
||||
"webOrigins" : [ ],
|
||||
"notBefore" : 0,
|
||||
"bearerOnly" : false,
|
||||
"consentRequired" : false,
|
||||
"serviceAccountsEnabled" : false,
|
||||
"directGrantsOnly" : false,
|
||||
"publicClient" : false,
|
||||
"frontchannelLogout" : false,
|
||||
"attributes" : { },
|
||||
"fullScopeAllowed" : false,
|
||||
"nodeReRegistrationTimeout" : 0,
|
||||
"protocolMappers" : [ {
|
||||
"id" : "bfb4a165-2a55-4e4b-9b13-05e68822f5d6",
|
||||
"name" : "family name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${familyName}",
|
||||
"config" : {
|
||||
"user.attribute" : "lastName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "family_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "c505e313-d478-4b1d-94df-c2c9b6036a95",
|
||||
"name" : "role list",
|
||||
"protocol" : "saml",
|
||||
"protocolMapper" : "saml-role-list-mapper",
|
||||
"consentRequired" : false,
|
||||
"config" : {
|
||||
"single" : "false",
|
||||
"attribute.nameformat" : "Basic",
|
||||
"attribute.name" : "Role"
|
||||
}
|
||||
}, {
|
||||
"id" : "12fc43f0-19b7-4b4a-b50a-40b6fc344ede",
|
||||
"name" : "email",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${email}",
|
||||
"config" : {
|
||||
"user.attribute" : "email",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "email",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "250f3bf3-2655-4482-a814-3adcc7cef5a4",
|
||||
"name" : "full name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-full-name-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${fullName}",
|
||||
"config" : {
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true"
|
||||
}
|
||||
}, {
|
||||
"id" : "6cf70d19-6a9e-4abf-8917-38b87bac15d6",
|
||||
"name" : "username",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${username}",
|
||||
"config" : {
|
||||
"user.attribute" : "username",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "preferred_username",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
}, {
|
||||
"id" : "6cdeae21-ca97-4723-b880-d5aa35fa77b0",
|
||||
"name" : "given name",
|
||||
"protocol" : "openid-connect",
|
||||
"protocolMapper" : "oidc-usermodel-property-mapper",
|
||||
"consentRequired" : true,
|
||||
"consentText" : "${givenName}",
|
||||
"config" : {
|
||||
"user.attribute" : "firstName",
|
||||
"id.token.claim" : "true",
|
||||
"access.token.claim" : "true",
|
||||
"claim.name" : "given_name",
|
||||
"Claim JSON Type" : "String"
|
||||
}
|
||||
} ]
|
||||
} ],
|
||||
"browserSecurityHeaders" : {
|
||||
"contentSecurityPolicy" : "frame-src 'self'",
|
||||
"xFrameOptions" : "SAMEORIGIN"
|
||||
},
|
||||
"smtpServer" : { },
|
||||
"eventsEnabled" : false,
|
||||
"eventsListeners" : [ "jboss-logging" ],
|
||||
"enabledEventTypes" : [ ],
|
||||
"adminEventsEnabled" : false,
|
||||
"adminEventsDetailsEnabled" : false,
|
||||
"identityFederationEnabled" : false,
|
||||
"internationalizationEnabled" : false,
|
||||
"supportedLocales" : [ ],
|
||||
"authenticationFlows" : [ {
|
||||
"alias" : "registration form",
|
||||
"description" : "registration form",
|
||||
"providerId" : "form-flow",
|
||||
"topLevel" : false,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "registration-user-creation",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 20
|
||||
}, {
|
||||
"authenticator" : "registration-profile-action",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 40
|
||||
}, {
|
||||
"authenticator" : "registration-password-action",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 50
|
||||
}, {
|
||||
"authenticator" : "registration-recaptcha-action",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "DISABLED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 60
|
||||
} ]
|
||||
}, {
|
||||
"alias" : "direct grant",
|
||||
"description" : "OpenID Connect Resource Owner Grant",
|
||||
"providerId" : "basic-flow",
|
||||
"topLevel" : true,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "direct-grant-validate-username",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 10
|
||||
}, {
|
||||
"authenticator" : "direct-grant-validate-password",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 20
|
||||
}, {
|
||||
"authenticator" : "direct-grant-validate-otp",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "OPTIONAL",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 30
|
||||
} ]
|
||||
}, {
|
||||
"alias" : "reset credentials",
|
||||
"description" : "Reset credentials for a user if they forgot their password or something",
|
||||
"providerId" : "basic-flow",
|
||||
"topLevel" : true,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "reset-credentials-choose-user",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 10
|
||||
}, {
|
||||
"authenticator" : "reset-credential-email",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 20
|
||||
}, {
|
||||
"authenticator" : "reset-password",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 30
|
||||
}, {
|
||||
"authenticator" : "reset-otp",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "OPTIONAL",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 40
|
||||
} ]
|
||||
}, {
|
||||
"alias" : "forms",
|
||||
"description" : "Username, password, otp and other auth forms.",
|
||||
"providerId" : "basic-flow",
|
||||
"topLevel" : false,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "auth-username-password-form",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 10
|
||||
}, {
|
||||
"authenticator" : "auth-otp-form",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "OPTIONAL",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 20
|
||||
} ]
|
||||
}, {
|
||||
"alias" : "clients",
|
||||
"description" : "Base authentication for clients",
|
||||
"providerId" : "client-flow",
|
||||
"topLevel" : true,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "client-secret",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "ALTERNATIVE",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 10
|
||||
}, {
|
||||
"authenticator" : "client-jwt",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "ALTERNATIVE",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 20
|
||||
} ]
|
||||
}, {
|
||||
"alias" : "browser",
|
||||
"description" : "browser based authentication",
|
||||
"providerId" : "basic-flow",
|
||||
"topLevel" : true,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "auth-cookie",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "ALTERNATIVE",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 10
|
||||
}, {
|
||||
"authenticator" : "auth-spnego",
|
||||
"autheticatorFlow" : false,
|
||||
"requirement" : "DISABLED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 20
|
||||
}, {
|
||||
"flowAlias" : "forms",
|
||||
"autheticatorFlow" : true,
|
||||
"requirement" : "ALTERNATIVE",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 30
|
||||
} ]
|
||||
}, {
|
||||
"alias" : "registration",
|
||||
"description" : "registration flow",
|
||||
"providerId" : "basic-flow",
|
||||
"topLevel" : true,
|
||||
"builtIn" : true,
|
||||
"authenticationExecutions" : [ {
|
||||
"authenticator" : "registration-page-form",
|
||||
"flowAlias" : "registration form",
|
||||
"autheticatorFlow" : true,
|
||||
"requirement" : "REQUIRED",
|
||||
"userSetupAllowed" : false,
|
||||
"priority" : 10
|
||||
} ]
|
||||
} ],
|
||||
"authenticatorConfig" : [ ],
|
||||
"requiredActions" : [ {
|
||||
"alias" : "CONFIGURE_TOTP",
|
||||
"name" : "Configure Totp",
|
||||
"providerId" : "CONFIGURE_TOTP",
|
||||
"enabled" : true,
|
||||
"defaultAction" : false,
|
||||
"config" : { }
|
||||
}, {
|
||||
"alias" : "VERIFY_EMAIL",
|
||||
"name" : "Verify Email",
|
||||
"providerId" : "VERIFY_EMAIL",
|
||||
"enabled" : true,
|
||||
"defaultAction" : false,
|
||||
"config" : { }
|
||||
}, {
|
||||
"alias" : "terms_and_conditions",
|
||||
"name" : "Terms and Conditions",
|
||||
"providerId" : "terms_and_conditions",
|
||||
"enabled" : false,
|
||||
"defaultAction" : false,
|
||||
"config" : { }
|
||||
}, {
|
||||
"alias" : "UPDATE_PASSWORD",
|
||||
"name" : "Update Password",
|
||||
"providerId" : "UPDATE_PASSWORD",
|
||||
"enabled" : true,
|
||||
"defaultAction" : false,
|
||||
"config" : { }
|
||||
}, {
|
||||
"alias" : "UPDATE_PROFILE",
|
||||
"name" : "Update Profile",
|
||||
"providerId" : "UPDATE_PROFILE",
|
||||
"enabled" : true,
|
||||
"defaultAction" : false,
|
||||
"config" : { }
|
||||
} ],
|
||||
"browserFlow" : "browser",
|
||||
"registrationFlow" : "registration",
|
||||
"directGrantFlow" : "direct grant",
|
||||
"resetCredentialsFlow" : "reset credentials",
|
||||
"clientAuthenticationFlow" : "clients"
|
||||
}
|
|
@ -37,7 +37,7 @@
|
|||
<module>base</module>
|
||||
<module>other</module>
|
||||
</modules>
|
||||
|
||||
|
||||
<properties>
|
||||
<auth.server>undertow</auth.server>
|
||||
<auth.server.undertow>true</auth.server.undertow>
|
||||
|
@ -54,7 +54,6 @@
|
|||
<auth.server.management.port>10090</auth.server.management.port>
|
||||
<auth.server.management.port.jmx>10099</auth.server.management.port.jmx>
|
||||
<auth.server.ssl.required>false</auth.server.ssl.required>
|
||||
<auth.server.jboss.startup.timeout>60</auth.server.jboss.startup.timeout>
|
||||
<auth.server.memory.settings>-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m</auth.server.memory.settings>
|
||||
<auth.server.config.property.name>serverConfig</auth.server.config.property.name>
|
||||
<auth.server.adapter.impl.class>org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</auth.server.adapter.impl.class>
|
||||
|
@ -76,6 +75,7 @@
|
|||
|
||||
<testsuite.constants>${project.build.directory}/dependency/test-constants.properties</testsuite.constants>
|
||||
|
||||
<skip.add.user.json>false</skip.add.user.json>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
|
@ -116,6 +116,7 @@
|
|||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${skip.add.user.json}</skip>
|
||||
<outputDirectory>${auth.server.config.dir}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
|
@ -178,7 +179,7 @@
|
|||
<properties>
|
||||
<property>
|
||||
<name>listener</name>
|
||||
<value>org.keycloak.testsuite.util.TestEventsLogger</value>
|
||||
<value>org.keycloak.testsuite.util.TestEventsLogger,org.keycloak.testsuite.util.junit.AggregateResultsReporter</value>
|
||||
</property>
|
||||
</properties>
|
||||
</configuration>
|
||||
|
@ -402,7 +403,7 @@
|
|||
</build>
|
||||
</profile>
|
||||
|
||||
<!-- Profiles for migration tests-->
|
||||
<!-- Profile for migration tests-->
|
||||
|
||||
<profile>
|
||||
<id>migration</id>
|
||||
|
@ -411,30 +412,8 @@
|
|||
<name>migrated.auth.server.version</name>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<!--diable exclusion pattern for migration tests, which is enabled by default in the base/pom.xml-->
|
||||
<exclude.migration>-</exclude.migration>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>enforce-properties</id>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<rules>
|
||||
<requireProperty>
|
||||
<property>migrated.auth.server.version</property>
|
||||
</requireProperty>
|
||||
</rules>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
|
@ -448,7 +427,7 @@
|
|||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>${migrated.auth.server.jboss.artifactId}</artifactId>
|
||||
<artifactId>integration-arquillian-migration-server</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>zip</type>
|
||||
</artifactItem>
|
||||
|
@ -464,158 +443,16 @@
|
|||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<migrated.auth.server.version>${migrated.auth.server.version}</migrated.auth.server.version>
|
||||
<auth.server.jboss.migration>true</auth.server.jboss.migration>
|
||||
<keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
|
||||
<keycloak.migration.file>src/test/resources/migration-test/migration-realm-${migrated.auth.server.version}.json</keycloak.migration.file>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>migration-kc16</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>migrated.auth.server.version</name>
|
||||
<value>1.6.1.Final</value>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc16</migrated.auth.server.jboss.artifactId>
|
||||
</properties>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<auth.server.jboss.kc16>true</auth.server.jboss.kc16>
|
||||
<keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
|
||||
<keycloak.migration.file>src/test/resources/migration-test/migration-realm-16.json</keycloak.migration.file>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>migration-kc15</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>migrated.auth.server.version</name>
|
||||
<value>1.5.1.Final</value>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc15</migrated.auth.server.jboss.artifactId>
|
||||
</properties>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<auth.server.jboss.kc15>true</auth.server.jboss.kc15>
|
||||
<keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
|
||||
<keycloak.migration.file>src/test/resources/migration-test/migration-realm-15.json</keycloak.migration.file>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>migration-kc14</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>migrated.auth.server.version</name>
|
||||
<value>1.4.0.Final</value>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc14</migrated.auth.server.jboss.artifactId>
|
||||
</properties>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<auth.server.jboss.kc14>true</auth.server.jboss.kc14>
|
||||
<keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>migration-kc13</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>migrated.auth.server.version</name>
|
||||
<value>1.3.1.Final</value>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc13</migrated.auth.server.jboss.artifactId>
|
||||
</properties>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<auth.server.jboss.kc13>true</auth.server.jboss.kc13>
|
||||
<keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>migration-kc12</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>migrated.auth.server.version</name>
|
||||
<value>1.2.0.Final</value>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc12</migrated.auth.server.jboss.artifactId>
|
||||
</properties>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<auth.server.jboss.kc12>true</auth.server.jboss.kc12>
|
||||
<keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<profile>
|
||||
<id>no-account</id>
|
||||
<properties>
|
||||
|
@ -645,6 +482,13 @@
|
|||
</file>
|
||||
</activation>
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.keycloak.testsuite</groupId>
|
||||
<artifactId>integration-arquillian-test-utils</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- TEST DEPENDENCIES -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
|
|
|
@ -287,6 +287,10 @@ public abstract class AbstractFirstBrokerLoginTest extends AbstractIdentityProvi
|
|||
|
||||
// authenticated and redirected to app. User is linked with identity provider
|
||||
assertFederatedUser("pedroigor", "psilva@redhat.com", "pedroigor");
|
||||
|
||||
// Assert user's email is verified now
|
||||
UserModel user = getFederatedUser();
|
||||
Assert.assertTrue(user.isEmailVerified());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -158,6 +158,7 @@ locale_es=Espa\u00F1ol
|
|||
locale_fr=Fran\u00e7ais
|
||||
locale_it=Italian
|
||||
locale_ja=\u65E5\u672C\u8A9E
|
||||
locale_no=Norsk
|
||||
locale_lt=Lietuvi\u0173
|
||||
locale_pt-BR=Portugu\u00EAs (Brasil)
|
||||
locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
|
|
@ -0,0 +1,163 @@
|
|||
doSave=Lagre
|
||||
doCancel=Avbryt
|
||||
doLogOutAllSessions=Logg ut av alle sesjoner
|
||||
doRemove=Fjern
|
||||
doAdd=Legg til
|
||||
doSignOut=Logg ut
|
||||
|
||||
editAccountHtmlTitle=Rediger konto
|
||||
federatedIdentitiesHtmlTitle=Federerte identiteter
|
||||
accountLogHtmlTitle=Kontologg
|
||||
changePasswordHtmlTitle=Endre passord
|
||||
sessionsHtmlTitle=Sesjoner
|
||||
accountManagementTitle=Keycloak kontoadministrasjon
|
||||
authenticatorTitle=Autentikator
|
||||
applicationsHtmlTitle=Applikasjoner
|
||||
|
||||
authenticatorCode=Engangskode
|
||||
email=E-post
|
||||
firstName=Fornavn
|
||||
givenName=Fornavn
|
||||
fullName=Fullt navn
|
||||
lastName=Etternavn
|
||||
familyName=Etternavn
|
||||
password=Passord
|
||||
passwordConfirm=Bekreftelse
|
||||
passwordNew=Nytt passord
|
||||
username=Brukernavn
|
||||
address=Adresse
|
||||
street=Gate-/veinavn + husnummer
|
||||
locality=By
|
||||
region=Fylke
|
||||
postal_code=Postnummer
|
||||
country=Land
|
||||
emailVerified=E-post bekreftet
|
||||
gssDelegationCredential=GSS legitimasjonsdelegering
|
||||
|
||||
role_admin=Administrator
|
||||
role_realm-admin=Administrator for sikkerhetsdomene
|
||||
role_create-realm=Opprette sikkerhetsdomene
|
||||
role_view-realm=Se sikkerhetsdomene
|
||||
role_view-users=Se brukere
|
||||
role_view-applications=Se applikasjoner
|
||||
role_view-clients=Se klienter
|
||||
role_view-events=Se hendelser
|
||||
role_view-identity-providers=Se identitetsleverand\u00F8rer
|
||||
role_manage-realm=Administrere sikkerhetsdomene
|
||||
role_manage-users=Administrere brukere
|
||||
role_manage-applications=Administrere applikasjoner
|
||||
role_manage-identity-providers=Administrere identitetsleverand\u00F8rer
|
||||
role_manage-clients=Administrere klienter
|
||||
role_manage-events=Administrere hendelser
|
||||
role_view-profile=Se profil
|
||||
role_manage-account=Administrere konto
|
||||
role_read-token=Lese token
|
||||
role_offline-access=Frakoblet tilgang
|
||||
role_uma_authorization=Skaffe tillatelser
|
||||
client_account=Konto
|
||||
client_security-admin-console=Sikkerhetsadministrasjonskonsoll
|
||||
client_admin-cli=Kommandolinje-grensesnitt for administrator
|
||||
client_realm-management=Sikkerhetsdomene-administrasjon
|
||||
client_broker=Broker
|
||||
|
||||
|
||||
requiredFields=Obligatoriske felt
|
||||
allFieldsRequired=Alle felt m\u00E5 fylles ut
|
||||
|
||||
backToApplication=« Tilbake til applikasjonen
|
||||
backTo=Tilbake til {0}
|
||||
|
||||
date=Dato
|
||||
event=Hendelse
|
||||
ip=IP
|
||||
client=Klient
|
||||
clients=Klienter
|
||||
details=Detaljer
|
||||
started=Startet
|
||||
lastAccess=Sist benyttet
|
||||
expires=Utl\u00F8per
|
||||
applications=Applikasjoner
|
||||
|
||||
account=Konto
|
||||
federatedIdentity=Federert identitet
|
||||
authenticator=Autentikator
|
||||
sessions=Sesjoner
|
||||
log=Logg
|
||||
|
||||
application=Applikasjon
|
||||
availablePermissions=Tilgjengelige rettigheter
|
||||
grantedPermissions=Innvilgede rettigheter
|
||||
grantedPersonalInfo=Innvilget personlig informasjon
|
||||
additionalGrants=Ekstra rettigheter
|
||||
action=Handling
|
||||
inResource=i
|
||||
fullAccess=Full tilgang
|
||||
offlineToken=Offline token
|
||||
revoke=Opphev rettighet
|
||||
|
||||
configureAuthenticators=Konfigurerte autentikatorer
|
||||
mobile=Mobiltelefon
|
||||
totpStep1=Installer <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> eller Google Authenticator p\u00E5 din enhet. Begge applikasjoner er tilgjengelige p\u00E5 <a href="https://play.google.com">Google Play</a> og Apple App Store.
|
||||
totpStep2=\u00C5pne applikasjonen og skann strekkoden eller skriv inn koden.
|
||||
totpStep3=Skriv inn engangskoden gitt av applikasjonen og klikk Lagre for \u00E5 fullf\u00F8re.
|
||||
|
||||
missingUsernameMessage=Vennligst oppgi brukernavn.
|
||||
missingFirstNameMessage=Vennligst oppgi fornavn.
|
||||
invalidEmailMessage=Ugyldig e-postadresse.
|
||||
missingLastNameMessage=Vennligst oppgi etternavn.
|
||||
missingEmailMessage=Vennligst oppgi e-postadresse.
|
||||
missingPasswordMessage=Vennligst oppgi passord.
|
||||
notMatchPasswordMessage=Passordene er ikke like.
|
||||
|
||||
missingTotpMessage=Vennligst oppgi engangskode.
|
||||
invalidPasswordExistingMessage=Ugyldig eksisterende passord.
|
||||
invalidPasswordConfirmMessage=Passordene er ikke like.
|
||||
invalidTotpMessage=Ugyldig engangskode.
|
||||
|
||||
usernameExistsMessage=Brukernavnet finnes allerede.
|
||||
emailExistsMessage=E-postadressen finnes allerede.
|
||||
|
||||
readOnlyUserMessage=Du kan ikke oppdatere kontoen din ettersom den er skrivebeskyttet.
|
||||
readOnlyPasswordMessage=Du kan ikke oppdatere passordet ditt ettersom kontoen din er skrivebeskyttet.
|
||||
|
||||
successTotpMessage=Autentikator for mobiltelefon er konfigurert.
|
||||
successTotpRemovedMessage=Autentikator for mobiltelefon er fjernet.
|
||||
|
||||
successGrantRevokedMessage=Vellykket oppheving av rettighet.
|
||||
|
||||
accountUpdatedMessage=Kontoen din har blitt oppdatert.
|
||||
accountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.
|
||||
|
||||
missingIdentityProviderMessage=Identitetsleverand\u00F8r er ikke spesifisert.
|
||||
invalidFederatedIdentityActionMessage=Ugyldig eller manglende handling.
|
||||
identityProviderNotFoundMessage=Spesifisert identitetsleverand\u00F8r ikke funnet.
|
||||
federatedIdentityLinkNotActiveMessage=Denne identiteten er ikke lenger aktiv.
|
||||
federatedIdentityRemovingLastProviderMessage=Du kan ikke fjerne siste federerte identitet ettersom du ikke har et passord.
|
||||
identityProviderRedirectErrorMessage=Redirect til identitetsleverand\u00F8r feilet.
|
||||
identityProviderRemovedMessage=Fjerning av identitetsleverand\u00F8r var vellykket.
|
||||
identityProviderAlreadyLinkedMessage=Federert identitet returnert av {0} er allerede koblet til en annen bruker.
|
||||
staleCodeAccountMessage=Siden har utl\u00F8pt. Vennligst pr\u00F8v en gang til.
|
||||
consentDenied=Samtykke avsl\u00E5tt.
|
||||
|
||||
accountDisabledMessage=Konto er deaktivert, kontakt administrator.
|
||||
|
||||
accountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller pr\u00F8v igjen senere.
|
||||
invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
|
||||
invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} sm\u00E5 bokstaver.
|
||||
invalidPasswordMinDigitsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} sifre.
|
||||
invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} store bokstaver.
|
||||
invalidPasswordMinSpecialCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} spesialtegn.
|
||||
invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke v\u00E6re likt brukernavn.
|
||||
invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-m\u00F8nster.
|
||||
invalidPasswordHistoryMessage=Ugyldig passord: kan ikke v\u00E6re likt noen av de {0} foreg\u00E5ende passordene.
|
||||
|
||||
locale_ca=Catal\u00E0
|
||||
locale_de=Deutsch
|
||||
locale_en=English
|
||||
locale_es=Espa\u00F1ol
|
||||
locale_fr=Fran\u00e7ais
|
||||
locale_it=Italian
|
||||
locale_ja=\u65E5\u672C\u8A9E
|
||||
locale_no=Norsk
|
||||
locale_pt-BR=Portugu\u00EAs (Brasil)
|
||||
locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
|
|
@ -1 +1 @@
|
|||
locales=ca,de,en,es,fr,it,ja,lt,pt-BR,ru
|
||||
locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru
|
|
@ -218,8 +218,8 @@ 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=Assertion Consumer Service Redirect Binding URL
|
||||
logout-service-binding-post-url=URL d''enlla\u00E7 SAML POST per a la desconnexi\u00F3
|
||||
logout-service-binding-post-url.tooltip=URL d''enlla\u00E7 SAML POST per a la desconnexi\u00F3 \u00FAnica del client. Pots deixar-ho en blanc si est\u00E0s fent servir un enlla\u00E7 diferent.
|
||||
logout-service-post-binding-url=URL d''enlla\u00E7 SAML POST per a la desconnexi\u00F3
|
||||
logout-service-post-binding-url.tooltip=URL d''enlla\u00E7 SAML POST per a la desconnexi\u00F3 \u00FAnica del client. Pots deixar-ho en blanc si est\u00E0s fent servir un enlla\u00E7 diferent.
|
||||
logout-service-redir-binding-url=URL d''enlla\u00E7 SAML de redirecci\u00F3 per a la desconnexi\u00F3
|
||||
logout-service-redir-binding-url.tooltip=URL d''enlla\u00E7 SAML de redirecci\u00F3 per a la desconnexi\u00F3 \u00FAnica del client. Pots deixar-ho en blanc si est\u00E0s fent servir un enlla\u00E7 diferent.
|
||||
|
||||
|
|
|
@ -248,8 +248,8 @@ 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-post-binding-url=Logout Service POST Binding URL
|
||||
logout-service-post-binding-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.
|
||||
|
||||
|
@ -318,7 +318,7 @@ 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.
|
||||
composite.available-realm-roles.tooltip=Realm level roles that you can associate to this composite role.
|
||||
remove-selected=Remove selected
|
||||
client-roles=Client Roles
|
||||
select-client-to-view-roles=Select client to view roles for client
|
||||
|
@ -566,7 +566,7 @@ realm-default-roles.tooltip=Realm level roles assigned to new users.
|
|||
default.available-roles-client.tooltip=Roles from this client that are assignable as a default.
|
||||
client-default-roles=Client Default Roles
|
||||
client-default-roles.tooltip=Roles from this client assigned as a default role.
|
||||
composite.available-roles.tooltip=Realm level roles associated with this composite role.
|
||||
composite.available-roles.tooltip=Realm level roles that you can associate to this composite role.
|
||||
composite.associated-roles.tooltip=Realm level roles associated with this composite role.
|
||||
composite.available-roles-client.tooltip=Roles from this client that you can associate to this composite role.
|
||||
composite.associated-roles-client.tooltip=Client roles associated with this composite role.
|
||||
|
@ -808,6 +808,7 @@ top-level-flow-type.tooltip=What kind of top level flow is it? Type 'client' is
|
|||
create-execution-flow=Create Execution Flow
|
||||
flow-type=Flow Type
|
||||
flow.form.type=form
|
||||
flow.generic.type=generic
|
||||
flow-type.tooltip=What kind of form is it
|
||||
form-provider=Form Provider
|
||||
default-groups.tooltip=Newly created or registered users will automatically be added to these groups
|
||||
|
|
|
@ -218,8 +218,8 @@ 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=Assertion Consumer Service Redirect Binding URL
|
||||
logout-service-binding-post-url=URL de enlace SAML POST para la desconexi\u00F3n
|
||||
logout-service-binding-post-url.tooltip=URL de enlace SAML POST para la desconexi\u00F3n \u00FAnica del cliente. Puedes dejar esto en blanco si est\u00E1s usando un enlace distinto.
|
||||
logout-service-post-binding-url=URL de enlace SAML POST para la desconexi\u00F3n
|
||||
logout-service-post-binding-url.tooltip=URL de enlace SAML POST para la desconexi\u00F3n \u00FAnica del cliente. Puedes dejar esto en blanco si est\u00E1s usando un enlace distinto.
|
||||
logout-service-redir-binding-url=URL de enlace SAML de redirecci\u00F3n para la desconexi\u00F3n
|
||||
logout-service-redir-binding-url.tooltip=URL de enlace SAML de redirecci\u00F3n para la desconexi\u00F3n \u00FAnica del cliente. Puedes dejar esto en blanco si est\u00E1s usando un enlace distinto.
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -233,8 +233,8 @@ assertion-consumer-post-binding-url=\u0421\u0432\u044F\u0437\u044B\u0432\u0430\u
|
|||
assertion-consumer-post-binding-url.tooltip=SAML POST \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0439 URL \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043E\u0432 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044F (\u0437\u0430\u043F\u0440\u043E\u0441\u044B \u0432\u0445\u043E\u0434\u0430). \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u044D\u0442\u043E \u043F\u043E\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0438\u043C\u0435\u0435\u0442\u0435 URL \u0434\u043B\u044F \u043E\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043B\u0435\u043D\u0438\u044F \u0442\u0430\u043A\u043E\u0439 \u0441\u0432\u044F\u0437\u043A\u0438.
|
||||
assertion-consumer-redirect-binding-url=\u0421\u0432\u044F\u0437\u044B\u0432\u0430\u043D\u0438\u0435 URL \u043F\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043E\u043C \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044F
|
||||
assertion-consumer-redirect-binding-url.tooltip=SAML \u043F\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044F \u043D\u0430 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0439 URL \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0433\u043E \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044F (\u0437\u0430\u043F\u0440\u043E\u0441\u044B \u0432\u0445\u043E\u0434\u0430). \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u044D\u0442\u043E \u043F\u043E\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C, \u0435\u0441\u043B\u0438 \u0432\u044B \u043D\u0435 \u0438\u043C\u0435\u0435\u0442\u0435 URL \u0434\u043B\u044F \u0442\u0430\u043A\u043E\u0433\u043E \u0441\u0432\u044F\u0437\u044B\u0432\u0430\u043D\u0438\u044F.
|
||||
logout-service-binding-post-url=\u0421\u0432\u044F\u0437\u044B\u0432\u0430\u043D\u0438\u0435 URL \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430 \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043B\u044F POST-\u043C\u0435\u0442\u043E\u0434\u0430
|
||||
logout-service-binding-post-url.tooltip=SAML POST \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0439 URL \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0433\u043E \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0435\u0434\u0438\u043D\u043E\u0433\u043E \u0432\u044B\u0445\u043E\u0434\u0430. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u044D\u0442\u043E \u043F\u043E\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C, \u0435\u0441\u043B\u0438 \u0432\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u0441\u0432\u044F\u0437\u0438
|
||||
logout-service-post-binding-url=\u0421\u0432\u044F\u0437\u044B\u0432\u0430\u043D\u0438\u0435 URL \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430 \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043B\u044F POST-\u043C\u0435\u0442\u043E\u0434\u0430
|
||||
logout-service-post-binding-url.tooltip=SAML POST \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0439 URL \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0433\u043E \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0435\u0434\u0438\u043D\u043E\u0433\u043E \u0432\u044B\u0445\u043E\u0434\u0430. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u044D\u0442\u043E \u043F\u043E\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C, \u0435\u0441\u043B\u0438 \u0432\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u0441\u0432\u044F\u0437\u0438
|
||||
logout-service-redir-binding-url=\u0421\u0432\u044F\u0437\u044B\u0432\u0430\u043D\u0438\u0435 URL \u043F\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430 \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430
|
||||
logout-service-redir-binding-url.tooltip=SAML \u043F\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442 \u043D\u0430 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0439 URL \u0434\u043B\u044F \u0435\u0434\u0438\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0438 \u0432\u044B\u0445\u043E\u0434\u0430 \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u044D\u0442\u043E \u043F\u043E\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C, \u0435\u0441\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u0441\u0432\u044F\u0437\u0438.
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
|
||||
invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minst {0} sm\u00E5 bokstaver.
|
||||
invalidPasswordMinDigitsMessage=Ugyldig passord: m\u00E5 inneholde minst {0} sifre.
|
||||
invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minst {0} store bokstaver.
|
||||
invalidPasswordMinSpecialCharsMessage=Ugyldig passord: m\u00E5 inneholde minst {0} spesialtegn.
|
||||
invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke v\u00E6re likt brukernavn.
|
||||
invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-m\u00F8nster.
|
||||
invalidPasswordHistoryMessage=Ugyldig passord: kan ikke v\u00E6re likt noen av de {0} foreg\u00E5ende passordene.
|
||||
|
||||
ldapErrorInvalidCustomFilter=Tilpasset konfigurasjon av LDAP-filter starter ikke med "(" eller slutter ikke med ")".
|
||||
ldapErrorMissingClientId=KlientID m\u00E5 v\u00E6re tilgjengelig i config n\u00E5r sikkerhetsdomenerollemapping ikke brukes.
|
||||
ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Ikke mulig \u00E5 bevare gruppearv og samtidig bruke UID medlemskapstype.
|
||||
ldapErrorCantWriteOnlyForReadOnlyLdap=Kan ikke sette write-only n\u00E5r LDAP leverand\u00F8r-modus ikke er WRITABLE
|
||||
ldapErrorCantWriteOnlyAndReadOnly=Kan ikke sette b\u00E5de write-only og read-only
|
|
@ -88,10 +88,10 @@
|
|||
<select class="form-control" name="policy.config.scannerPeriodUnit"
|
||||
data-ng-model="policy.config.scannerPeriodUnit"
|
||||
ng-disabled="!policy.config.sessionName">
|
||||
<option>{{:: 'seconds' | translate}}</option>
|
||||
<option>{{:: 'minutes' | translate}}</option>
|
||||
<option>{{:: 'hours' | translate}}</option>
|
||||
<option>{{:: 'days' | translate}}</option>
|
||||
<option value="Seconds">{{:: 'seconds' | translate}}</option>
|
||||
<option value="Minutes">{{:: 'minutes' | translate}}</option>
|
||||
<option value="Hours">{{:: 'hours' | translate}}</option>
|
||||
<option value="Days">{{:: 'days' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<kc-tooltip>{{:: 'authz-policy-drools-update-period.tooltip' | translate}}</kc-tooltip>
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
max="31536000" data-ng-model="client.nodeReRegistrationTimeout"
|
||||
id="nodeReRegistrationTimeout" name="nodeReRegistrationTimeout"/>
|
||||
<select class="form-control" name="nodeReRegistrationTimeoutUnit" data-ng-model="client.nodeReRegistrationTimeoutUnit" >
|
||||
<option data-ng-selected="!client.nodeReRegistrationTimeoutUnit">{{:: 'seconds' | translate}}</option>
|
||||
<option>{{:: 'minutes' | translate}}</option>
|
||||
<option>{{:: 'hours' | translate}}</option>
|
||||
<option>{{:: 'days' | translate}}</option>
|
||||
<option data-ng-selected="!client.nodeReRegistrationTimeoutUnit" value="Seconds">{{:: 'seconds' | translate}}</option>
|
||||
<option value="Minutes">{{:: 'minutes' | translate}}</option>
|
||||
<option value="Hours">{{:: 'hours' | translate}}</option>
|
||||
<option value="Days">{{:: 'days' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -232,7 +232,7 @@
|
|||
<kc-tooltip>{{:: 'debug.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-md-2 control-label" for="debug">{{:: 'use-kerberos-for-password-authentication' | translate}} </label>
|
||||
<label class="col-md-2 control-label" for="useKerberosForPasswordAuthentication">{{:: 'use-kerberos-for-password-authentication' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.useKerberosForPasswordAuthentication" id="useKerberosForPasswordAuthentication" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
|
|
|
@ -84,7 +84,8 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}} <span tooltip-placement="right" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'group.effective-roles-client.tooltip' | translate}}" class="fa fa-info-circle"></span></label>
|
||||
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'group.effective-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="client-composite" class="form-control" multiple size=5
|
||||
disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
|
|
@ -46,10 +46,10 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="resource">{{:: 'resource-path' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'resource-path.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="resource" name="resource" data-ng-model="query.resourcePath">
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'resource-path.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="dateFrom">{{:: 'date-(from)' | translate}}</label>
|
||||
|
|
|
@ -17,14 +17,12 @@
|
|||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="eventsListeners" class="control-label">{{:: 'event-listeners' | translate}}</label>
|
||||
|
||||
<kc-tooltip>{{:: 'event-listeners.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<select ui-select2 ng-model="eventsConfig.eventsListeners" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
|
||||
<option ng-repeat="listener in eventListeners" value="{{listener}}">{{listener}}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'event-listeners.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
@ -33,41 +31,37 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="enabled">{{:: 'save-events' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'login.save-events.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.eventsEnabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'login.save-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<label class="col-md-2 control-label" for="enabledEventTypes" class="control-label">{{:: 'saved-types' | translate}}</label>
|
||||
|
||||
<kc-tooltip>{{:: 'saved-types.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<input ui-select2="eventSelectOptions" id="enabledEventTypes" ng-model="eventsConfig.enabledEventTypes" data-placeholder="{{:: 'select-event-types.placeholder' | translate}}"/>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'saved-types.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageEvents && eventsConfig.eventsEnabled">
|
||||
<label class="col-md-2 control-label" for="password">{{:: 'clear-events' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'clear-events.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearEvents()" >{{:: 'clear-events' | translate}}</button>
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'clear-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<div class="form-group" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<label class="col-md-2 control-label" for="expiration">{{:: 'expiration' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<kc-tooltip>{{:: 'events.expiration.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6 time-selector">
|
||||
<input class="form-control" type="number" data-ng-model="eventsConfig.eventsExpiration" id="expiration" name="expiration" min="0"/>
|
||||
</div>
|
||||
<div class="col-md-2 select-kc">
|
||||
<select name="expirationUnit" data-ng-model="eventsConfig.expirationUnit" >
|
||||
<option>{{:: 'minutes' | translate}}</option>
|
||||
<option>{{:: 'hours' | translate}}</option>
|
||||
<option>{{:: 'days' | translate}}</option>
|
||||
<select class="form-control" name="expirationUnit" data-ng-model="eventsConfig.expirationUnit">
|
||||
<option value="Minutes">{{:: 'minutes' | translate}}</option>
|
||||
<option value="Hours">{{:: 'hours' | translate}}</option>
|
||||
<option value="Days">{{:: 'days' | translate}}</option>
|
||||
</select>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'events.expiration.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
@ -78,28 +72,26 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="adminEventsEnabled">{{:: 'save-events' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'admin.save-events.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.adminEventsEnabled" name="adminEventsEnabled" id="adminEventsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'admin.save-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="eventsConfig.adminEventsEnabled">
|
||||
<label class="col-md-2 control-label" for="adminEventsDetailsEnabled">{{:: 'include-representation' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'include-representation.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.adminEventsDetailsEnabled" name="adminEventsDetailsEnabled" id="adminEventsDetailsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'include-representation.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageEvents && eventsConfig.adminEventsEnabled">
|
||||
<label class="col-md-2 control-label" for="password">{{:: 'clear-admin-events' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'clear-admin-events.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearAdminEvents()" >{{:: 'clear-admin-events' | translate}}</button>
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'clear-admin-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
|
|
@ -118,13 +118,13 @@
|
|||
</div>
|
||||
<kc-tooltip>{{:: 'identity-provider.logout-url.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="backchannelSupported">{{:: 'backchannel-logout' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'backchannel-logout.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="backchannelSupported">{{:: 'backchannel-logout' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>{{:: 'backchannel-logout.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="userInfoUrl">{{:: 'user-info-url' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
|
@ -167,9 +167,9 @@
|
|||
<select class="form-control" id="prompt" ng-model="identityProvider.config.prompt">
|
||||
<option value="">{{:: 'unspecified.option' | translate}}</option>
|
||||
<option value="none">{{:: 'none.option' | translate}}</option>
|
||||
<option>{{:: 'consent.option' | translate}}</option>
|
||||
<option>{{:: 'login.option' | translate}}</option>
|
||||
<option>{{:: 'select-account.option' | translate}}</option>
|
||||
<option value="consent">{{:: 'consent.option' | translate}}</option>
|
||||
<option value="login">{{:: 'login.option' | translate}}</option>
|
||||
<option value="select_account">{{:: 'select-account.option' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -109,13 +109,13 @@
|
|||
</div>
|
||||
<kc-tooltip>{{:: 'saml.single-logout-service-url.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="backchannelSupported">{{:: 'backchannel-logout' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'backchannel-logout.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="backchannelSupported">{{:: 'backchannel-logout' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input ng-model="identityProvider.config.backchannelSupported" id="backchannelSupported" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>{{:: 'backchannel-logout.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="nameIDPolicyFormat">{{:: 'nameid-policy-format' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
|
|
|
@ -84,7 +84,8 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}} <span tooltip-placement="right" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'user.effective-roles-client.tooltip' | translate}}" class="fa fa-info-circle"></span></label>
|
||||
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'user.effective-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="client-composite" class="form-control" multiple size=5
|
||||
disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import=common/keycloak
|
||||
locales=ca,de,en,es,fr,it,ja,lt,pt-BR,ru
|
||||
locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru
|
|
@ -0,0 +1,24 @@
|
|||
emailVerificationSubject=Bekreft e-postadresse
|
||||
emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.
|
||||
emailVerificationBodyHtml=<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>
|
||||
identityProviderLinkSubject=Lenke {0}
|
||||
identityProviderLinkBody=Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene\n\n{3}\n\nDenne lenken vil utl\u00F8pe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.
|
||||
identityProviderLinkBodyHtml=<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene.</p><p><a href="{3}">{3}</a></p><p>Denne lenken vil utl\u00F8pe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>
|
||||
passwordResetSubject=Tilbakestill passord
|
||||
passwordResetBody=Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.
|
||||
passwordResetBodyHtml=<p>Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>
|
||||
executeActionsSubject=Oppdater kontoen din
|
||||
executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 lenken nedenfor for \u00E5 starte denne prosessen\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.
|
||||
executeActionsBodyHtml=<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 linken nedenfor for \u00E5 starte denne prosessen.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>
|
||||
eventLoginErrorSubject=Innlogging feilet
|
||||
eventLoginErrorBody=Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||
eventLoginErrorBodyHtml=<p>Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
|
||||
eventRemoveTotpSubject=Fjern engangskode
|
||||
eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||
eventRemoveTotpBodyHtml=<p>Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
|
||||
eventUpdatePasswordSubject=Oppdater passord
|
||||
eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||
eventUpdatePasswordBodyHtml=<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
|
||||
eventUpdateTotpSubject=Oppdater engangskode
|
||||
eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||
eventUpdateTotpBodyHtml=<p>Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
|
|
@ -1 +1 @@
|
|||
locales=ca,de,en,es,fr,it,ja,lt,pt-BR,ru
|
||||
locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru
|
|
@ -8,7 +8,7 @@
|
|||
<form id="kc-reset-password-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
|
||||
<div class="${properties.kcFormGroupClass!}">
|
||||
<div class="${properties.kcLabelWrapperClass!}">
|
||||
<label for="username" class="${properties.kcLabelClass!}">${msg("usernameOrEmail")}</label>
|
||||
<label for="username" class="${properties.kcLabelClass!}"><#if !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
|
||||
</div>
|
||||
<div class="${properties.kcInputWrapperClass!}">
|
||||
<input type="text" id="username" name="username" class="${properties.kcInputClass!}" autofocus/>
|
||||
|
@ -30,4 +30,4 @@
|
|||
<#elseif section = "info" >
|
||||
${msg("emailInstruction")}
|
||||
</#if>
|
||||
</@layout.registrationLayout>
|
||||
</@layout.registrationLayout>
|
||||
|
|
|
@ -215,6 +215,7 @@ locale_es=Espa\u00F1ol
|
|||
locale_fr=Fran\u00e7ais
|
||||
locale_it=Italian
|
||||
locale_ja=\u65E5\u672C\u8A9E
|
||||
locale_no=Norsk
|
||||
locale_pt_BR=Portugu\u00EAs (Brasil)
|
||||
locale_pt-BR=Portugu\u00EAs (Brasil)
|
||||
locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
|
||||
|
@ -227,4 +228,4 @@ clientDisabledMessage=Client disabled.
|
|||
invalidParameterMessage=Invalid parameter\: {0}
|
||||
alreadyLoggedIn=You are already logged in.
|
||||
|
||||
p3pPolicy=CP="This is not a P3P policy!"
|
||||
p3pPolicy=CP="This is not a P3P policy!"
|
||||
|
|
|
@ -0,0 +1,229 @@
|
|||
doLogIn=Logg inn
|
||||
doRegister=Registrer deg
|
||||
doCancel=Avbryt
|
||||
doSubmit=Send inn
|
||||
doYes=Ja
|
||||
doNo=Nei
|
||||
doContinue=Fortsett
|
||||
doAccept=Aksepter
|
||||
doDecline=Avsl\u00E5
|
||||
doForgotPassword=Glemt passord?
|
||||
doClickHere=Klikk her
|
||||
doImpersonate=Utgi deg for \u00E5 v\u00E6re en annen bruker
|
||||
kerberosNotConfigured=Kerberos er ikke konfigurert
|
||||
kerberosNotConfiguredTitle=Kerberos er ikke konfigurert
|
||||
bypassKerberosDetail=Enten er du ikke logget inn via Kerberos eller s\u00E5 st\u00F8tter ikke nettleseren innlogging med Kerberos. Vennligst klikk Fortsett for \u00E5 logge inn p\u00E5 andre m\u00E5ter
|
||||
kerberosNotSetUp=Kerberos er ikke konfigurert. Du kan ikke logge inn.
|
||||
registerWithTitle=Registrer deg med {0}
|
||||
registerWithTitleHtml={0}
|
||||
loginTitle=Logg inn p\u00E5 {0}
|
||||
loginTitleHtml={0}
|
||||
impersonateTitle={0} Gi deg ut for \u00E5 v\u00E6re en annen bruker
|
||||
impersonateTitleHtml=<strong>{0} Gi deg ut for \u00E5 v\u00E6re en annen bruker</strong>
|
||||
realmChoice=Sikkerhetsdomene
|
||||
unknownUser=Ukjent bruker
|
||||
loginTotpTitle=Konfigurer autentifikator for mobil
|
||||
loginProfileTitle=Oppdater konto
|
||||
loginTimeout=Du brukte for lang tid p\u00E5 \u00E5 logge inn. Vennligst pr\u00F8v igjen.
|
||||
oauthGrantTitle=Gi tilgang
|
||||
oauthGrantTitleHtml={0}
|
||||
errorTitle=Vi beklager...
|
||||
errorTitleHtml=Vi <strong>beklager</strong> ...
|
||||
emailVerifyTitle=E-postbekreftelse
|
||||
emailForgotTitle=Glemt passord?
|
||||
updatePasswordTitle=Oppdater passord
|
||||
codeSuccessTitle=Suksesskode
|
||||
codeErrorTitle=Feilkode\: {0}
|
||||
|
||||
termsTitle=Vilk\u00E5r og betingelser
|
||||
termsTitleHtml=Vilk\u00E5r og betingelser
|
||||
termsText=<p>Vilk\u00E5r og betingelser kommer</p>
|
||||
|
||||
recaptchaFailed=Ugyldig Bildebekreftelse
|
||||
recaptchaNotConfigured=Bildebekreftelse er p\u00E5krevet, men er ikke konfigurert
|
||||
consentDenied=Samtykke avsl\u00E5tt.
|
||||
|
||||
noAccount=Ny bruker?
|
||||
username=Brukernavn
|
||||
usernameOrEmail=Brukernavn eller e-postadresse
|
||||
firstName=Fornavn
|
||||
givenName=Fornavn
|
||||
fullName=Fullstendig navn
|
||||
lastName=Etternavn
|
||||
familyName=Etternavn
|
||||
email=E-postadresse
|
||||
password=Passord
|
||||
passwordConfirm=Bekreft passord
|
||||
passwordNew=Nytt passord
|
||||
passwordNewConfirm=Bekreft nytt Passord
|
||||
rememberMe=Husk meg
|
||||
authenticatorCode=Engangskode
|
||||
address=Adresse
|
||||
street=Gate-/veinavn + husnummer
|
||||
locality=By
|
||||
region=Fylke
|
||||
postal_code=Postnummer
|
||||
country=Land
|
||||
emailVerified=E-postadresse bekreftet
|
||||
gssDelegationCredential=GSS legitimasjons-delegering
|
||||
|
||||
loginTotpStep1=Installer <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> eller Google Authenticator p\u00E5 din mobiltelefon. Begge applikasjoner er tilgjengelige p\u00E5 <a href="https://play.google.com">Google Play</a> og Apple App Store.
|
||||
loginTotpStep2=\u00C5pne applikasjonen og skann strekkoden eller skriv inn koden
|
||||
loginTotpStep3=Skriv inn engangskoden fra applikasjonen og klikk send inn for \u00E5 fullf\u00F8re
|
||||
loginTotpOneTime=Engangskode
|
||||
|
||||
oauthGrantRequest=Vil du gi disse tilgangsrettighetene?
|
||||
inResource=i
|
||||
|
||||
emailVerifyInstruction1=En e-post med instruksjoner for \u00E5 bekrefte din e-postadresse har blitt sendt til deg.
|
||||
emailVerifyInstruction2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?
|
||||
emailVerifyInstruction3=for \u00E5 sende e-post p\u00E5 nytt.
|
||||
|
||||
emailLinkIdpTitle=Lenke {0}
|
||||
emailLinkIdp1=En e-post med instruksjoner for \u00E5 koble {0} konto med din {2} konto har blitt sendt til deg.
|
||||
emailLinkIdp2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?
|
||||
emailLinkIdp3=for \u00E5 sende e-post p\u00E5 nytt.
|
||||
|
||||
backToLogin=« Tilbake til innlogging
|
||||
emailInstruction=Skriv inn e-postadressen din og vi vil sende deg instruksjoner for hvordan du oppretter et nytt passord.
|
||||
|
||||
copyCodeInstruction=Vennligst kopier denne koden og lim den inn i applikasjonen din:
|
||||
|
||||
personalInfo=Personlig informasjon:
|
||||
role_admin=Administrator
|
||||
role_realm-admin=Administrator for sikkerhetsdomene
|
||||
role_create-realm=Opprette sikkerhetsdomene
|
||||
role_create-client=Opprette klient
|
||||
role_view-realm=Se sikkerhetsdomene
|
||||
role_view-users=Se brukere
|
||||
role_view-applications=Se applikasjoner
|
||||
role_view-clients=Se klienter
|
||||
role_view-events=Se hendelser
|
||||
role_view-identity-providers=Se identitetsleverand\u00F8rer
|
||||
role_manage-realm=Administrere sikkerhetsdomene
|
||||
role_manage-users=Administrere brukere
|
||||
role_manage-applications=Administrere applikasjoner
|
||||
role_manage-identity-providers=Administrere identitetsleverand\u00F8rer
|
||||
role_manage-clients=Administrere klienter
|
||||
role_manage-events=Administrere hendelser
|
||||
role_view-profile=Se profil
|
||||
role_manage-account=Administrere konto
|
||||
role_read-token=Lese token
|
||||
role_offline-access=Frakoblet tilgang
|
||||
role_uma_authorization=Skaffe tillatelser
|
||||
client_account=Konto
|
||||
client_security-admin-console=Sikkerthetsadministrasjonskonsoll
|
||||
client_realm-management=Sikkerhetsdomene-administrasjon
|
||||
client_broker=Broker
|
||||
|
||||
invalidUserMessage=Ugyldig brukernavn eller passord.
|
||||
invalidEmailMessage=Ugyldig e-postadresse.
|
||||
accountDisabledMessage=Konto er deaktivert, kontakt administrator.
|
||||
accountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller pr\u00F8v p\u00E5 nytt senere.
|
||||
expiredCodeMessage=Login ble tidsavbrutt. Vennligst logg inn p\u00E5 nytt.
|
||||
|
||||
missingFirstNameMessage=Vennligst oppgi fornavn.
|
||||
missingLastNameMessage=Vennligst oppgi etternavn.
|
||||
missingEmailMessage=Vennligst oppgi e-postadresse.
|
||||
missingUsernameMessage=Vennligst oppgi brukernavn.
|
||||
missingPasswordMessage=Vennligst oppgi passord.
|
||||
missingTotpMessage=Vennligst oppgi autentiseringskode.
|
||||
notMatchPasswordMessage=Passordene er ikke like.
|
||||
|
||||
invalidPasswordExistingMessage=Ugyldig eksisterende passord.
|
||||
invalidPasswordConfirmMessage=Passord er ikke like.
|
||||
invalidTotpMessage=Ugyldig engangskode.
|
||||
|
||||
usernameExistsMessage=Brukernavnet finnes allerede.
|
||||
emailExistsMessage=E-post finnes allerede.
|
||||
|
||||
federatedIdentityExistsMessage=Bruker med {0} {1} finnes allerede. Vennligst logg inn p\u00E5 kontoadministratsjon for \u00E5 koble sammen kontoene.
|
||||
|
||||
confirmLinkIdpTitle=Kontoen finnes allerede
|
||||
federatedIdentityConfirmLinkMessage=Bruker med {0} {1} finnes allerede. Hvordan vil du fortsette?
|
||||
federatedIdentityConfirmReauthenticateMessage=Bekreft at du er {0} for \u00E5 koble din konto med {1}
|
||||
confirmLinkIdpReviewProfile=Se over og bekreft profil
|
||||
confirmLinkIdpContinue=Legg til eksisterende konto
|
||||
|
||||
configureTotpMessage=Du m\u00E5 sette opp en engangskode-generator for \u00E5 aktivere konto.
|
||||
updateProfileMessage=Du m\u00E5 oppdatere brukerprofilen din for \u00E5 aktivere konto.
|
||||
updatePasswordMessage=Du m\u00E5 skifte passord for \u00E5 aktivere kontoen din.
|
||||
verifyEmailMessage=Du m\u00E5 bekrefte e-postadressen din for \u00E5 aktivere konto.
|
||||
linkIdpMessage=You need to verify your email address to link your account with {0}.
|
||||
|
||||
emailSentMessage=Du vil straks motta en e-post med ytterlige instruksjoner.
|
||||
emailSendErrorMessage=Mislyktes \u00E5 sende e-post, vennligst pr\u00F8v igjen senere.
|
||||
|
||||
accountUpdatedMessage=Din konto har blitt oppdatert.
|
||||
accountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.
|
||||
|
||||
noAccessMessage=Ingen tilgang
|
||||
|
||||
invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
|
||||
invalidPasswordMinDigitsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} sifre.
|
||||
invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} sm\u00E5 bokstaver.
|
||||
invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} store bokstaver.
|
||||
invalidPasswordMinSpecialCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} spesialtegn.
|
||||
invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke v\u00E6re likt brukernavn.
|
||||
invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-m\u00F8nster.
|
||||
invalidPasswordHistoryMessage=Ugyldig passord: kan ikke v\u00E6re likt noen av de {0} foreg\u00E5ende passordene.
|
||||
|
||||
failedToProcessResponseMessage=Kunne ikke behandle svar
|
||||
httpsRequiredMessage=HTTPS p\u00E5krevd
|
||||
realmNotEnabledMessage=Sikkerhetsdomene er ikke aktivert
|
||||
invalidRequestMessage=Ugyldig foresp\u00F8rsel
|
||||
failedLogout=Utlogging feilet
|
||||
unknownLoginRequesterMessage=Ukjent anmoder for innlogging
|
||||
loginRequesterNotEnabledMessage=Anmoder for innlogging er ikke aktivert
|
||||
bearerOnlyMessage=Bearer-only applikasjoner har ikke lov til \u00E5 initiere innlogging via nettleser
|
||||
standardFlowDisabledMessage=Klienten har ikke lov til \u00E5 initiere innlogging via nettleser med gitt response_type. Standard flow er deaktivert for denne klienten.
|
||||
implicitFlowDisabledMessage=Klienten har ikke lov til \u00E5 initiere innlogging via nettleser med gitt response_type. Implicit flow er deaktivert for denne klienten.
|
||||
invalidRedirectUriMessage=Ugyldig redirect uri
|
||||
unsupportedNameIdFormatMessage=NameIDFormat er ikke st\u00F8ttet
|
||||
invalidRequesterMessage=Ugyldig sender av foresp\u00F8rsel
|
||||
registrationNotAllowedMessage=Registrering er ikke lov
|
||||
resetCredentialNotAllowedMessage=Tilbakestilling av innloggingsdata er ikke lov
|
||||
|
||||
permissionNotApprovedMessage=Tillatelse ikke godkjent.
|
||||
noRelayStateInResponseMessage=Ingen relay state i svar fra identitetsleverand\u00F8r.
|
||||
insufficientPermissionMessage=Utilstrekkelige rettigheter for \u00E5 koble identiteter.
|
||||
couldNotProceedWithAuthenticationRequestMessage=Kunne ikke g\u00E5 videre med autentiseringsforesp\u00F8rsel til identitetsleverand\u00F8r.
|
||||
couldNotObtainTokenMessage=Klarte ikke \u00E5 innhente token fra identitetsleverand\u00F8r.
|
||||
unexpectedErrorRetrievingTokenMessage=Uventet feil ved henting av token fra identitetsleverand\u00F8r.
|
||||
unexpectedErrorHandlingResponseMessage=Uventet feil ved h\u00E5ndtering av svar fra identitetsleverand\u00F8r.
|
||||
identityProviderAuthenticationFailedMessage=Autentisering feilet. Kunne ikke autentisere med identitetsleverand\u00F8r.
|
||||
identityProviderDifferentUserMessage= Autentisert som {0}, men forventet \u00E5 bli identifisert som {1}
|
||||
couldNotSendAuthenticationRequestMessage=Kunne ikke sende autentiseringsforesp\u00F8rsel til identitetsleverand\u00F8r.
|
||||
unexpectedErrorHandlingRequestMessage=Uventet feil ved h\u00E5ndtering av autentiseringsforesp\u00F8rsel til identitetsleverand\u00F8r.
|
||||
invalidAccessCodeMessage=Ugyldig tilgangskode.
|
||||
sessionNotActiveMessage=Sesjonen er ikke aktiv.
|
||||
invalidCodeMessage=En feil oppstod, vennligst logg inn p\u00E5 nytt i din applikasjon.
|
||||
identityProviderUnexpectedErrorMessage=Uventet feil ved autentisering med identitetsleverand\u00F8r
|
||||
identityProviderNotFoundMessage=Kunne ikke finne en identitetsleverand\u00F8r med identifikatoren.
|
||||
identityProviderLinkSuccess=Din konto ble suksessfullt koblet med {0} konto {1}.
|
||||
staleCodeMessage=Denne siden er ikke lenger gyldig. Vennligst g\u00E5 tilbake til applikasjonen din og logg inn p\u00E5 nytt.
|
||||
realmSupportsNoCredentialsMessage=Sikkerhetsdomene st\u00F8tter ingen legitimasjonstyper.
|
||||
identityProviderNotUniqueMessage=Sikkerhetsdomene st\u00F8tter flere identitetsleverand\u00F8rer. Kunne ikke avgj\u00F8re hvilken identitetsleverand\u00F8r som burde brukes for autentisering.
|
||||
emailVerifiedMessage=Din e-postadresse har blitt verifisert.
|
||||
staleEmailVerificationLink=Lenken du klikket er utg\u00E5tt og er ikke lenger gyldig. Har du kanskje allerede bekreftet e-postadressen din?
|
||||
|
||||
locale_ca=Catal\u00E0
|
||||
locale_de=Deutsch
|
||||
locale_en=English
|
||||
locale_es=Espa\u00F1ol
|
||||
locale_fr=Fran\u00e7ais
|
||||
locale_it=Italian
|
||||
locale_ja=\u65E5\u672C\u8A9E
|
||||
locale_no=Norsk
|
||||
locale_pt_BR=Portugu\u00EAs (Brasil)
|
||||
locale_pt-BR=Portugu\u00EAs (Brasil)
|
||||
locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
|
||||
|
||||
backToApplication=« Tilbake til applikasjonen
|
||||
missingParameterMessage=Manglende parameter\: {0}
|
||||
clientNotFoundMessage=Klient ikke funnet.
|
||||
clientDisabledMessage=Klient deaktivert.
|
||||
invalidParameterMessage=Ugyldig parameter\: {0}
|
||||
alreadyLoggedIn=Du er allerede innlogget.
|
||||
|
||||
p3pPolicy=CP="Dette er ikke en P3P policy!"
|
|
@ -1 +1 @@
|
|||
locales=ca,de,en,es,fr,it,ja,lt,pt-BR,ru
|
||||
locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru
|
Loading…
Reference in a new issue