Agregar autenticaciones múltiples en un conector personalizado

Autenticaciones múltiples (multi-auth) es una función que permite a los usuarios crear conexiones proporcionándoles una opción para elegir qué método de autenticación quieren usar para crear su conexión, en lugar de estar limitado a un solo tipo de autenticación.

Para un conector, defina una colección de tipos de autenticación mediante connectionParameterSets en el apiProperties.json archivo .

Importante

El Asistente para conectores personalizados aún no admite la habilitación de varias autenticaciones en un conector personalizado. En su lugar, use Microsoft Power Platform Connectors CLI para crear un conector personalizado con multi-autenticación.

Cómo habilitar la autenticación múltiple

Añada connectionParameterSets al archivo apiProperties.json y rellene la colección connectionParameterSets.values con tantos connectionParameters como se necesiten para el conector.

Obtenga más información sobre los parámetros de conexión y los tipos de autenticación en Parámetros de conexión.

Importante

  • Si el conector usa OAuth, supervise y renueve periódicamente el identificador de cliente y las credenciales de secreto de cliente para que los clientes puedan seguir usando el conector.
  • Al actualizar el secreto de cliente, actualice la versión de swagger.
  • Envíe la actualización del conector un mes antes de que expire el identificador de cliente y el secreto de cliente.

uiDefinition-constraints-required: true es un parámetro obligatorio en el ConnectionsParameterSets archivo para cada tipo de autenticación en parámetros.

En la sección siguiente se muestra la estructura 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>"
      // ...
    }
  ]
}

Ejemplos

Configuración con clave API y autenticación básica

"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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}

Configuración con Entra ID y OAUTH 2.0

Puede configurar dos parámetros de conexión del mismo tipo. En este caso, ambas autorizaciones usan el tipo oauthSetting. Una autorización permite al usuario crear una conexión mediante Entra ID y la otra autorización va a un punto de conexión personalizado.

"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"
                        }
                    }
                }
            }
        }
    ]
}

Puede encontrar un ejemplo de cómo implementar la autenticación múltiple en el conector RescoCloud.