Forum Discussion

data_turke's avatar
data_turke
Frequent Visitor
1 year ago
Solved

Rotating Databricks PAT for Power BI Gateway datasource via REST API (RSA-OAEP encrypted creds)

Context

  1. I’m using a service principal that has:

  • Power BI Admin role

  • Gateway Admin on the target Enterprise Gateway

  • Admin on the specific datasource/connection

  • The necessary API permissions (per MS docs for Gateways/Datasources)

Docs I’m following: https://learn.microsoft.com/en-us/rest/api/power-bi/gateways/update-datasource#examples

  1. We rotate PAT tokens in Databricks on a schedule and want to update the corresponding Power BI gateway datasource (non-VNet gateway) whenever the PAT changes.

  2. I used the sample from the Microsoft “Encrypt credentials” repo to encrypt the payload with the gateway’s public key:
    https://github.com/microsoft/PowerBI-Developer-Samples/tree/master/Python/Encrypt%20credentials

Goal

Automate PATCH /gateways/{gatewayId}/datasources/{datasourceId} to update the Databricks PAT for an existing gateway datasource.

 

Wondering if i an get some help with REST API i get this error no matter what i try - "The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. "

Sample payload 

 
"credentialDetails": {
"credentialType": "Key",
"credentials": "{\"credentialData\":[{\"name\":\"key\", \"value\":\"adad==\"}]}",
"encryptedConnection": "Encrypted",
"encryptionAlgorithm": "RSA-OAEP",
"privacyLevel": "None"
}
 

  • Yes, I validated with ChatGPT to confirm the payload was valid. However, I’m directly using the output generated from the localhost instance I set up following this GitHub sample. Has this approach worked for  you others 

3 Replies

  • Hi data_turke 

     

    Can you confirm when you are creating the new credentials from Databricks that it does not include any of the reserved characters used in base64 encoding?

    • data_turke's avatar
      data_turke
      Frequent Visitor

      Yes, I validated with ChatGPT to confirm the payload was valid. However, I’m directly using the output generated from the localhost instance I set up following this GitHub sample. Has this approach worked for  you others 

  • data_turke's avatar
    data_turke
    Frequent Visitor

    Any suggestions here Anonymous . I have tried manually updating the pat token through GUI that works same token encrypted with the gatewayid seems to not work