The Alfresco Identity Service provides authentication and enables SSO across the Alfresco platform.
100K+
The Alfresco Identity Service will become the central component responsible for identity-related capabilities needed by other Alfresco software, such as managing users, groups, roles, profiles, and authentication. Currently it deals just with authentication. This project contains the open-source core of this service.
For installing and upgrading the Identity Service you can choose either a Kubernetes distribution or a standalone distribution. Both methods are described in the following sections.
These instructions illustrate deployment to a Kubernetes cluster on EKS.
Please check the ACS deployment documentation.
If you are deploying the Identity Service into a cluster with other Alfresco components such as Content Services and Process Services, a VPC and cluster with 5 nodes is recommended. Each node should be a m4.xlarge EC2 instance.
Create the namespace if it does not already exist, to avoid conflicts in the cluster:
export DESIREDNAMESPACE=example
kubectl create namespace $DESIREDNAMESPACE
This environment variable will be used in the deployment steps.
Prepare the EKS cluster by deploying an ingress. See the instruction here
Get the release name from the ingress deployment (step 1) and set it as a variable:
export INGRESS_RELEASENAME=<YOUR_INGRESS_RELEASE_NAME>
export RELEASENAME=ids
helm repo add alfresco-stable https://kubernetes-charts.alfresco.com/stable
helm install $RELEASENAME alfresco-stable/alfresco-identity-service --devel \
--namespace $DESIREDNAMESPACE
helm status $RELEASENAME
export ELBADDRESS=$(kubectl get services $INGRESS_RELEASENAME-ingress-nginx-controller --namespace=$DESIREDNAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
The above steps will deploy alfresco-identity-service with the default example realm applied which results in default values of:
| Property | Value |
|---|---|
| Admin User Username | admin |
| Admin User Password | admin |
| Admin User Email | [email protected] |
| Alfresco Client Redirect URIs | http://localhost* |
(Note that APS expects the email as the username)
You can override the default redirectUri of http://localhost* for your environment with the alfresco-identity-service.client.alfresco.redirectUris property:
helm install $RELEASENAME alfresco-stable/alfresco-identity-service --devel \
--set alfresco-identity-service.realm.alfresco.client.redirectUris="{$DNSNAME}" \
--namespace $DESIREDNAMESPACE
including multiple redirectUris:
helm install $RELEASENAME alfresco-stable/alfresco-identity-service --devel \
--set alfresco-identity-service.realm.alfresco.client.redirectUris="{$DNSNAME,$DNSNAME1,$DNSNAME2}" \
--namespace $DESIREDNAMESPACE
Note in case of multiple redirectUris the values must be comma-separated with no whitespaces surrounding the corresponding commas.
If you want to deploy your own realm with further customizations, see Customizing the Realm below.
Similarly to redirectUris, webOrigins can be changed by overriding the
alfresco-identity-service.client.alfresco.webOrigins property:
helm install $RELEASENAME alfresco-stable/alfresco-identity-service --devel \
--set alfresco-identity-service.realm.alfresco.client.webOrigins="{$DNSNAME}" \
--namespace $DESIREDNAMESPACE
For multiple webOrigins:
helm install $RELEASENAME alfresco-stable/alfresco-identity-service --devel \
--set alfresco-identity-service.realm.alfresco.client.webOrigins="{$DNSNAME,$DNSNAME1,$DNSNAME2}" \
--namespace $DESIREDNAMESPACE
For added resilience, we rely on support in the Keycloak chart for specifying multiple replicas. To enable this you will need to deploy the identity chart with this additional setting:
--set alfresco-identity-service.keycloak.replicas=3
In addition, for high availability, Keycloak supports clustering. For more information on how to configure high availability and clustering, you can consult this additional documentation.
Keycloak Standalone Clustered configuration
NOTE: Be aware that Keycloak recommends that sticky sessions are used so keep that in mind if you choose to use a different ingress type than nginx.
You will need a realm file. A sample realm file is provided.
Create a secret using your realm json file
!!NOTE The secret name must be realm-secret, and the realm file name must not be alfresco-realm.json.
kubectl create secret generic realm-secret \
--from-file=./realm.json \
--namespace=$DESIREDNAMESPACE
keycloak:
extraEnv: |
- name: KEYCLOAK_USER
value: admin
- name: KEYCLOAK_PASSWORD
value: admin
- name: KEYCLOAK_IMPORT
value: /realm/realm.json
NOTE: The above settings use the default admin/admin for keycloak username and password, you can replace those with your own values.
helm repo add alfresco-stable https://kubernetes-charts.alfresco.com/stable
helm install $RELEASENAME alfresco-stable/alfresco-identity-service --devel \
-f custom-values.yaml \
--namespace $DESIREDNAMESPACE
For further details see Setting a Custom Realm.
Once Keycloak is up and running, login to the Management Console to configure the required realm.
Add a realm named "Alfresco"
Create an OIDC client named "alfresco" within the Alfresco realm
Create a group named "admin"
Add a new user with a username of "testuser", email of "[email protected]" and first and last name of "test"
Go to the Add Realm page and click the "Select File" button next to the Import label.
Choose the sample realm file and click the "Create" button.
We encourage and welcome contributions to this project. For further details please check the contributing file.
Content type
Image
Digest
sha256:fd25d9451…
Size
354.9 MB
Last updated
about 3 years ago
docker pull alfresco/alfresco-identity-service:2.0.0