Configuración de credenciales mediante programación para Power BI
SE APLICA A: La aplicación es la propietaria de los datos El usuario es el propietario de los datos
Para configurar las credenciales mediante programación para Power BI, siga los pasos descritos en este artículo. La configuración de credenciales mediante programación también le permite cifrar las credenciales.
Nota:
- El usuario que llama debe ser propietario del modelo semántico o administrador de la puerta de enlace. También puede usar una entidad de servicio. Por ejemplo, la entidad de servicio puede ser el propietario del modelo semántico.
- Los orígenes de datos en la nube y sus credenciales correspondientes se administran a nivel de usuario.
Actualización del flujo de credenciales para orígenes de datos
Descubra los orígenes de datos del modelo semántico mediante una llamada a Obtener orígenes de datos. En el cuerpo de la respuesta de cada origen de datos están el tipo, los detalles de conexión, la puerta de enlace y el identificador del origen de datos.
// Select a datasource var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value; var datasource = datasources.First();
Compile la cadena de credenciales de acuerdo con los ejemplos de actualización de origen de datos. El contenido de la cadena de credenciales depende del tipo de credenciales.
var credentials = new BasicCredentials(username: "username", password :"*****");
Nota
Si usa orígenes de datos en la nube, no siga los pasos posteriores de esta sección. Llame a Actualizar origen de datos para establecer las credenciales con el identificador de puerta de enlace y el identificador de origen de datos obtenidos en el paso 1.
Recupere la clave pública de la puerta de enlace mediante una llamada a Obtener puerta de enlace.
var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
Cifre las credenciales.
var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
Compile los detalles de las credenciales con credenciales cifradas.
Use la clase AsymetricKeyEncryptor con la clave pública recuperada en el paso 3.
var credentialDetails = new CredentialDetails( credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Establezca las credenciales mediante una llamada a Actualizar origen de datos.
pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
Configuración de un nuevo origen de datos para una puerta de enlace de datos
Instale la puerta de enlace de datos local en el equipo.
Recupere el identificador de la puerta de enlace y la clave pública mediante una llamada a Obtener puertas de enlace.
// Select a gateway var gateways = pbiClient.Gateways.GetGateways().Value; var gateway = gateways.First();
Compile los detalles de las credenciales siguiendo el procedimiento que se describe en la sección Actualización del flujo de credenciales para orígenes de datos mediante la clave pública de puerta de enlace que recuperó en el paso 2.
Compile el cuerpo de la solicitud.
var request = new PublishDatasourceToGatewayRequest( dataSourceType: "SQL", connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}", credentialDetails: credentialDetails, dataSourceName: "my sql datasource");
Llame a la API Create Datasource (Crear origen de datos).
pbiClient.Gateways.CreateDatasource(gateway.Id, request);
Tipos de credenciales
Al llamar a Crear origen de datos o Actualizar origen de datos desde la API REST de Power BI en una puerta de enlace local empresarial, cifre el valor de las credenciales mediante la clave pública de puerta de enlace.
Nota
El SDK de .NET v3 también puede ejecutar los ejemplos del SDK de .NET v2 que se enumeran a continuación.
Windows y credenciales básicas
// Windows credentials
var credentials = new WindowsCredentials(username: "john", password: "*****");
// Or
// Basic credentials
var credentials = new BasicCredentials(username: "john", password: "*****");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Credenciales de clave
var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Credenciales de OAuth2
var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Credenciales anónimas
var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);
Solución de problemas
No se ha encontrado ninguna puerta de enlace ni identificador de origen de datos al llamar a Obtener orígenes de datos.
Este problema significa que el modelo semántico no está enlazado a una puerta de enlace. Al crear un nuevo modelo semántico, para cada conexión de nube se crea de forma automática un origen de datos sin credenciales en la puerta de enlace en la nube del usuario. Esta puerta de enlace en la nube se usa para almacenar las credenciales para las conexiones en la nube.
Después de crear el modelo semántico, se crea un enlace automático entre el modelo semántico y una puerta de enlace adecuada, que contiene los orígenes de datos coincidentes para todas las conexiones. Se produce un error en el enlace automático si no hay puertas de enlace adecuadas.
Si utiliza un modelo semántico local, cree los orígenes de datos locales que faltan y enlácelos manualmente a una puerta de enlace mediante Enlazar a puerta de enlace.
Para detectar las puertas de enlace que se pueden enlazar, use Detección de puertas de enlace.