Forum Discussion
Gateways and Datasources with Service Principal Profile
How do I give my service principal profile access to a gateway datasource?
I'm currently trying to call https://docs.microsoft.com/en-us/rest/api/power-bi/gateways/add-datasource-user with gatewayid, datasourceid, identifier (service principal app id) and profile (service principal profile).
The API call is authenticated using the service principal in question. (not the profile)
The service principal is member of an AD security group that is "Admin" for the gateway, and "Owner" for the datasource.
The API call results in an "Unathourized" response.
Problem was solved by sending the correct object id as "identifier" to the API. Ref https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedded-troubleshoot#what-is-the-difference-between-application-object-id-and-principal-object-id
3 Replies
- lbendlinSuper User
Gateway data sources are consumed by developer personas. The regular report users do not need to know about that setup at all. Are you saying that your service principal is a developer?
- Qondor_AMNew Member
Problem was solved by sending the correct object id as "identifier" to the API. Ref https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedded-troubleshoot#what-is-the-difference-between-application-object-id-and-principal-object-id
- BIBBAdvocate I
Thanks, this was useful, I will only add this in case someone else needs it. The correct payload for a service principal profile is the one below:
{ "datasourceAccessRight": "Read", "identifier": "{{Object ID}}", //fix, this is the enterprise application "principalType":"App", //enterprise application "profile": { "id": "{{Service Principal Profile ID}}", "displayName": "{{Service Principal Profile Name}}" //this is optional. } }