Integrations
To integrate ADS with Axiomatics Services Manager (ASM) or the Authorization Hub, configure ADS to retrieve its authorization domain configuration from the respective service. This requires two steps: prepare ASM or the Authorization Hub to serve the domain, then update your ADS deployment configuration.
Preparation
Select the tab for your service.
- ASM
- Authorization Hub
-
Configure an authorization domain in an ASM project
See the Domain managementOpens in a new tab section of the ASM documentation.
-
Configure Keycloak
Set up the Keycloak client to give ADS authentication access. Follow the instructions in the Configure Keycloak for ADSOpens in a new tab section of the ASM documentation.
-
Configure an authorization domain in the Authorization Hub
See the DomainsOpens in a new tab section of the Authorization Hub documentation.
-
Manage client access through Keycloak
Set up the Keycloak client to give ADS authentication access. Follow the instructions in the Client managementOpens in a new tab section of the Authorization Hub documentation.
Deployment configuration
Update your deployment.yaml file to point to the remote HTTP/HTTPS endpoint and configure the appropriate authentication.
-
Set the domain path
Set
pathunder thedomainsection to the HTTP/HTTPS URL of your ASM or Authorization Hub endpoint.noteURL-encode spaces in domain names as
%20. For example,Project 1becomesProject%201.path: https://<hostname>/adm/api/namespaces/Project%201/names/mydomain/domain.yaml -
Configure authentication
ADS requires client credentials to request the domain configuration from ASM or the Authorization Hub. Under
domain.authentication, configure OAuth2 authentication:-
Specify an
oauth2ClientIdunderdomain.authentication. -
Add the corresponding OAuth2 properties (
client-id,client-secret,scope,authorization-grant-type, andtoken-uri) underspring.security.oauth2.client.tipUse environment variables to protect sensitive information such as your client secret.
-
-
Configure TLS
Secure communications between ADS and your service using TLS:
-
Define a
tlsConfigurationId(for example,admBundle) in thedomain.authenticationsection.Optionally, define an
oauth2TlsConfigurationIdto configure TLS for OAuth2 token retrieval separately from domain retrieval. It can reference the same bundle astlsConfigurationIdor a different one. -
Add
keystore(location, password, type) andtruststore(location, password, type) properties underspring.ssl.bundle.jks.ADS supports both basic TLS with a KeyStore and TLS with client certificates (mTLS).
tipAs an alternative to defining a Spring TLS bundle, configure TLS trust at the JVM level by passing truststore properties as JVM startup arguments. See Configure TLS: JVM truststore for details.
-
# ADS configuration for integration with ASM or the Authorization Hub
license: file:<path_to_file>/axiomatics_ADS.license
domain:
path: https://<host>/domain.yaml
authentication:
oauth2ClientId: adm-client
tlsConfigurationId: admBundle
# oauth2TlsConfigurationId: tokenBundle
spring:
security:
oauth2:
client:
registration:
adm-client:
client-id: <your_client_id>
client-secret: ${OAUTH_CLIENT_SECRET}
scope: openid # Defines the scope of access requested by the client.
authorization-grant-type: <your_grant_type>
provider: adm-client
provider:
adm-client:
# Uncomment the line for either ASM or the Hub. Do NOT uncomment both.
# token-uri: https://<asm-hostname>/auth/realms/asm/protocol/openid-connect/token
# token-uri: https://<hub-hostname>/auth/realms/hub/protocol/openid-connect/token
ssl:
bundle:
jks:
admBundle:
keystore:
location: file:<path_to_keystore.jks> # Or .p12 for PKCS12
password: ${KEYSTORE_PASSWORD}
type: JKS # Replace with PKCS12 depending on the keystore type used
truststore:
location: file:<path_to_truststore.jks>
password: ${TRUSTSTORE_PASSWORD}
type: JKS # Replace with PKCS12 depending on the keystore type used
# tokenBundle:
# keystore:
# location: file:<path_to_keystore.jks> # Or .p12 for PKCS12
# password: ${KEYSTORE_PASSWORD}
# type: JKS or PKCS12
# truststore:
# location: file:<path_to_truststore.jks>
# password: ${TRUSTSTORE_PASSWORD}
# type: JKS or PKCS12
Replace all placeholders with your actual values before deploying.