Ajouter plusieurs authentifications pour un connecteur personnalisé

Authentifications multiples (multi-auth) est une fonctionnalité qui permet aux utilisateurs de créer des connexions en leur offrant une possibilité de choisir la méthode d’authentification qu’ils souhaitent utiliser pour créer leur connexion, au lieu de se limiter à un seul type d’authentification.

Pour un connecteur, définissez une collection de types d’authentification via connectionParameterSets dans le fichier apiProperties.json.

Important

L’Assistant Connecteur personnalisé ne prend pas encore en charge l’activation de plusieurs authentifications sur un connecteur personnalisé. Utilisez plutôt l’interface CLI Microsoft Power Platform Connectors CLI pour créer un connecteur personnalisé avec plusieurs authentifications.

Comment activer la multi-authentification

Ajouter connectionParameterSets dans le fichier apiProperties.json et remplissez la collection connectionParameterSets.values avec autant de connectionParameters nécessaire pour le connecteur.

En savoir plus sur les paramètres de connexion et les types d’authentification dans Paramètres de connexion.

Important

  • Si votre connecteur utilise OAuth, surveillez et renouvelez régulièrement l’ID client et les informations d’identification de secret client arrivant à expiration afin que les clients puissent continuer à utiliser votre connecteur.
  • Lorsque vous mettez à jour la clé secrète client, mettez à jour la version swagger.
  • Envoyez la mise à jour du connecteur un mois avant l’expiration de votre ID client et de votre clé secrète client.

uiDefinition-constraints-required: true est un paramètre obligatoire dans le ConnectionsParameterSets fichier pour chaque type d’authentification sous les paramètres.

La section suivante montre la structure de connectionParameterSets.

"connectionParameterSets": {
  // uiDefinition for the parameter sets.
  "uiDefinition": {
    "displayname": "Select the authorization type",
    "description": "<<Enter here your description>>"
  },
  "values": [
    // Connection parameter set
    {
      "name": "<parameter set name>",
      // uiDefinition for this parameter set.
      "uiDefinition": {
        "displayname": "<display name>",
        "description": "<description text>"
      },
      "parameters": {
        // Schema matches existing "connectionParameters"
        "<parameter name>": {
          "type": "string | securestring | oauthsetting"
        },
        "<parameter name>:clientId": {
          "type": "string",
          "uiDefinition": {
            "schema": {
              // For string types, the description must be placed in
              // uiDefinition.schema.description to be shown in the description box
              "type": "string",
              "description": "<description text>"
            },
            "displayName": "<display name>",
          }
        }
      }
    },
    {
      "name": "<parameter set name 2>"
      // ...
    }
  ]
}

Exemples

Configuration avec clé API et authentification de base

"connectionParameterSets": {
    "uiDefinition": {
        "displayName": "Authentication Type",
        "description": "Type of authentication to be used."
    },
    "values": [
        {
            "name": "basic-auth",
            "uiDefinition": {
                "displayName": "Use your X credentials",
                "description": "Log in using your username and password for X."
            },
            "parameters": {
                "username": {
                    "type": "string",
                    "uiDefinition": {
                        "displayName": "X username",
                        "schema":{
                            "description": "The username for X",
                            "type": "string"
                        },
                        "tooltip": "Provide your X username",
                        "constraints": {
                            "required": "true"
                        }
                    }
                },
                "password": {
                    "type": "securestring",
                    "uiDefinition": {
                        "displayName": "X password",
                        "schema":{
                            "description": "The password for X",
                            "type": "securestring"
                        },
                        "tooltip": "Provide your X password",
                        "constraints": {
                            "required": "true"
                        }
                    }
                }
            }
        },
        {
            "name": "api-auth",
            "uiDefinition": {
                "displayName": "Use X API Key",
                "description": "Log in using X's API Key."
            },
            "parameters": {
                "api_key": {
                    "type": "securestring",
                    "uiDefinition": {
                        "constraints": {
                            "clearText": false,
                            "required": "true",
                            "tabIndex": 3
                        },
                        "schema":{
                            "description": "Enter your API Key for X",
                            "type": "securestring"
                        },
                        "displayName": "API Key generated in X"
                    }
                },
                "environment": {
                    "type": "string",
                    "uiDefinition": {
                        "displayName": "Environment",
                        "schema":{
                            "description": "The API environment to use; either production or sandbox",
                            "type": "string"
                        },
                        "tooltip": "Select an API environment to use",
                        "constraints": {
                            "required": "true",
                            "allowedValues": [
                                {
                                    "text": "Sandbox",
                                    "value": "YOUR_SANDBOX_VALUE_HERE"
                                },
                                {
                                    "text": "Production",
                                    "value": "YOUR_PROD_VALUE_HERE"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}

Configuration avec Entra ID et OAUTH 2.0

Vous pouvez configurer deux paramètres de connexion du même type. Dans ce cas, les deux autorisations utilisent le oauthSetting type. Une autorisation permet à l’utilisateur de créer une connexion à l’aide de l’ID Entra, et l’autre autorisation est envoyée à un point de terminaison personnalisé.

"connectionParameterSets": {
    "uiDefinition": {
        "displayName": "Authentication Type",
        "description": "Type of authentication to be used."
    },
    "values": [
        {
            "name": "aad-auth",
            "uiDefinition": {
                "displayName": "Use default shared application",
                "description": "Log in using the standard X app."
            },
            "parameters": {
                "token": {
                    "oAuthSettings": {
                        "clientId": "YOUR_AAD_APPLICATION_ID_HERE",
                        "customParameters": {
                            "loginUri": {
                                "value": "https://login.windows.net"
                            },
                            "resourceUri": {
                                "value": "https://graph.microsoft.com"
                            },
                            "tenantId": {
                                "value": "common"
                            }
                        },
                        "identityProvider": "aad",
                        "properties": {
                            "IsFirstParty": "False"
                        },
                        "redirectMode": "GlobalPerConnector",
                        "scopes": [
                            "Group.ReadWrite.All offline_access"
                        ]
                    },
                    "type": "oauthSetting",
                    "uiDefinition": {
                        "displayName": "AAD based authentication",
                        "description": "Sign in using your AAD credentials",
                        "tooltip": "AAD based authentication",
                        "constraints": {
                            "required": "true"
                        }
                    }
                }
            }
        },
        {
            "name": "custom-app-auth",
            "uiDefinition": {
                "displayName": "Use the X authentication app",
                "description": "Log in using X app."
            },
            "parameters": {
                "token": {
                    "type": "oauthSetting",
                    "oAuthSettings": {
                        "clientId": "YOUR_CLIENT_ID_HERE",
                        "identityProvider": "oauth2",
                        "redirectMode": "GlobalPerConnector",
                        "customParameters": {
                            "authorizationUrl": {
                                "value": "https://login.dummy.net/request"
                            },
                            "refreshUrl": {
                                "value": "https://login.dummy.net/token"
                            },
                            "tokenUrl": {
                                "value": "https://login.dummy.net/token"
                            }
                        }
                    },
                    "uiDefinition": {
                        "displayName": "Custom app based authentication",
                        "description": "Sign in using your custom app credentials",
                        "tooltip": "Custom app based authentication",
                        "constraints": {
                            "required": "true"
                        }
                    }
                }
            }
        }
    ]
}

Vous trouverez un exemple d’implémentation de l’authentification multi-authentification dans le connecteur RescoCloud.