Replies: 1 comment 5 replies
-
Argo CD, historically, has used its API server as a middle-man between the UI and the IDP, which allowed the client secret to remain secret, as it is insecure to distribute the client secret to the UI. More recently, it gained the ability (optional, afaik) to use the authorization code flow with PKCE, which is a more modern approach for SPAs or other clients that cannot secure the client secret. This configuration doesn't involve any client secret at all. Kargo has used PKCE from the beginning. This does limit it to working directly with IDPs that support it. In all other cases, Dex, which does fully support it, needs to be used as an adapter. In the case of Entra ID (formerly Azure AD), PKCE is directly supported. You should easily find the options in the Kargo chart's values.yaml file for configuring OIDC without Dex and as for the Entra ID side of things, you should follow their own documentation for registering a SPA application to use the authorization code flow with PKCE. |
Beta Was this translation helpful? Give feedback.
-
Hi Team,
I am trying to implement SSO using AzureAD.
When I am using Dex, it is asking for Directory.ReadAll permission which is not allowed in our organization.
So, I would like to understand if there is a way to skip DEX and directly use OIDC with clientID and client secret and configure the SSO.
This should essentially be similar to how it is done for argocd. We have directly implement OIDC with azureAd and skipped Dex for argocd.
My kargo-api configmap looks like below which uses Dex:
Source: kargo/templates/api/configmap.yaml
--- apiVersion: v1 kind: ConfigMap metadata: name: kargo-api namespace: kargo labels: helm.sh/chart: kargo-1.0.3 app.kubernetes.io/name: kargo app.kubernetes.io/instance: kargo app.kubernetes.io/version: "v1.0.3" app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: api data: KARGO_NAMESPACE: kargo LOG_LEVEL: "DEBUG" TLS_ENABLED: "true" TLS_CERT_PATH: /etc/kargo/tls.crt TLS_KEY_PATH: /etc/kargo/tls.key SECRET_MANAGEMENT_ENABLED: "true" PERMISSIVE_CORS_POLICY_ENABLED: "true" ADMIN_ACCOUNT_ENABLED: "true" ADMIN_ACCOUNT_TOKEN_ISSUER: https://kargo-master-age.abc.com ADMIN_ACCOUNT_TOKEN_AUDIENCE: "kargo-master-age.abc.com" ADMIN_ACCOUNT_TOKEN_TTL: "24h" OIDC_ENABLED: "true" OIDC_ADDITIONAL_SCOPES: groups GLOBAL_SERVICE_ACCOUNT_NAMESPACES: kargo GLOBAL_SERVICE_ACCOUNT: kargo-admin OIDC_ISSUER_URL: https://login.microsoftonline.com/3ac94b33-1234-5674-9502-hfiefewviuvbwiuy4wg35/v2.0 OIDC_CLIENT_ID: kargo-master-age.abc.com OIDC_CLI_CLIENT_ID: kargo-master-age.abc.com-cli DEX_ENABLED: "true" DEX_SERVER_ADDRESS: https://kargo-dex-server.kargo.svc #DEX_SERVER_ADDRESS: https://login.microsoftonline.com/3ac94b33-1234-5674-9502-hfiefewviuvbwiuy4wg35/v2.0 DEX_CA_CERT_PATH: /etc/kargo/idp-ca.crt ARGOCD_NAMESPACE: argocd ARGOCD_URLS: =https://argocd-masterage.abc.com ROLLOUTS_INTEGRATION_ENABLED: "true" ---
Below is my secret configured for Dex:
`
Source: kargo/templates/dex-server/secret.yaml
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: kargo-dex-server
namespace: kargo
labels:
helm.sh/chart: kargo-1.0.3
app.kubernetes.io/name: kargo
app.kubernetes.io/instance: kargo
app.kubernetes.io/version: "v1.0.3"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: dex-server
stringData:
config.yaml: |-
issuer: https://login.microsoftonline.com/3ac94b33-1234-5674-9502-hfiefewviuvbwiuy4wg35/v2.0
Is there any solution to this? I am not able to move ahead and have been forced in using admin user.
Beta Was this translation helpful? Give feedback.
All reactions