Authentification multifacteur PingID

Le connecteur PingID MFA demande l’authentification d’une instance PingID MFA par le biais d’une requête PPM. PingID renvoie l’état de l’authentification et les attributs dans les réclamations à l’orchestrateur.

Configuration

Les valeurs suivantes peuvent être fournies au connecteur PingID MFA via le fichier de configuration de Maverics.

ppmURL L’URL où Maverics enverra la requête PPM (en principe :« https://authenticator.pingone.com/pingid/ppm/auth »).

secretKey Le secret client de l’application Maverics utilisé pour signer les jetons Web JSON (JWT, JSON Web Tokens). Le secret doit être codé en base64.

idpAccountID L’identifiant du compte du fournisseur de service créé dans PingID.

issuer La réclamation de l’émetteur identifiant le principal ayant émis le JWT.

audience La réclamation d’audience identifiant les destinataires du JWT (en principe « pingidauthenticator »).

mfaCallbackURL L’URL utilisée par PingID pour POSTER la réponse PPM. Le gestionnaire PPM MFA de Maverics sera servi sur cette URL. Le chemin d’accès à l’URL peut être un terminal quelconque tel que /stuff/mfa/callback ou /maverics-handlers/mfa/callback.

Mappage des réclamations dans la politique d’authentification

L’utilisation du connecteur MFA PingID dans la politique d’authentification nécessite une correspondance entre le nom d’utilisateur PingID (envoyé sous la forme de « sub » dans la requête PPM) et une réclamation correspondante fournie par le connecteur du fournisseur d’identité. Cela permet de faire correspondre l’identité de l’utilisateur du premier facteur (fournisseur d’identité) avec son identité PingID. Par exemple :

authentication:
  idps:
    - azure
  mfa:
    - pingid:
        mapping:
          - username: azure.name

Exemple de configuration de connecteur

connectors:
  - name: pingid
    type: pingid
    ppmURL: "https://authenticator.pingone.com/pingid/ppm/auth"
    secretKey: <example_secret>
    idpAccountID: "0aa0000a-a000-000a-00aaa-a0000aa00000"
    issuer: "Example"
    audience: "pingidauthenticator"
    mfaCallbackURL: "https://maverics.example.com/mfa/callback"

Exemple de configuration complète avec Azure AD

version: 0.1

tls:
  sonar-app:
    caFile: /etc/maverics/certs/rootCA.pem
  maverics:
    certFile: /etc/maverics/certs/maverics.sonarsystems.co.crt
    keyFile: /etc/maverics/certs/maverics.sonarsystems.co.key

http:
  address: :443
  tls: maverics

session:
  cookie:
    domain: example.com

appgateways:
  - name: Sonar
    basePath: /
    upstream: https://app.sonarsystems.com:8443
    tls: sonar-app
    unauthorizedPage: https://example.com/sonar/accessdenied

    idps:
      - name: azure
      - name: pingid

    headers:
      SM_USER: azure.name
      firstname: azure.name
      lastname: azure.surname

    policies:
      - location: /sonar/accessdenied
        allowUnauthenticated: true
      - location: /sonar
        unauthorizedPage: https://app.sonarsystems.com:8443/sonar/accessdenied
        authentication:
          idps:
            - azure
          mfa:
            - pingid:
                mapping:
                  - username: azure.name

connectors:
  - name: azure
    type: azure
    authType: saml
    samlConsumerServiceURL: https://example.com/saml
    samlLogoutCallbackURL: https://example.com/logout
    samlMetadataURL: https://login.microsoftonline.com/<ID>/federationmetadata/2007-06/federationmetadata.xml?appid=<APP_ID>
    samlEntityID: https://example.com

  - name: pingid
    type: pingid
    ppmURL: "https://authenticator.pingone.com/pingid/ppm/auth"
    secretKey: <example_secret>
    idpAccountID: "0aa0000a-a000-000a-00aaa-a0000aa00000"
    issuer: "Example"
    audience: "pingidauthenticator"
    mfaCallbackURL: "https://maverics.example.com/mfa/callback"