Forum Discussion
Attempt to get list of Workspaces via REST API results in 401 Unauthorized.
- Anonymous5 years ago
I finally found the answer to this issue and wanted to document it here.
The issue is that you don't need to just add API Permissions to an App Registration. You need to also consent to each API Permission (scope) at a user or app level. Now, an admin can grant access for all users (which is what is mentioned by some answers here in this post), but I'm not an admin, so I couldn't do that. What I needed to do was consent as a user to the specific API permissions that I had added to my App Registration.
Unfortunately, I couldn't find a way to do this in the Azure AD interface. In fact, I only found one place anywhere that actually explained how to do this for a *user* (the admin-level consent was mentioned in numerous places). Here is an answer here which talks about the URL needed to grant user consent to an API permission: https://stackoverflow.com/questions/59282141/aadsts65001-the-user-or-administrator-has-not-consented-to-use-the-application
The URLs look like so:
https://login.microsoftonline.com/[Put your Tenant ID here]/oauth2/v2.0/authorize? client_id=[This is your Client ID from your App Registration] &response_type=code &redirect_uri=https://myapp.mycompany.com[This must be the Redirect URI you setup in your App Registration] &response_mode=query &scope=https://graph.microsoft.com/User.Read[This is the scope URL for the API Permission]
Once I (finally) found that example, I was able to piece together a URL to consent to the newly added Workspace API permissions and my code started working. You can find out the "scope" URL for each API permission (which you have to add to the end of the full URL above) by going to your App Registration and clicking on API Permissions and then clicking on any of the API permissions you've added. This will bring up a window which shows the URL for that API Permission.
That "Grant admin consent for..." checkbox is grayed out on my screen.
And I looked at those other posts, but they're for Tenant access, not Workspace access, and I don't even follow what they mean about a "Service Principle". I'd need more detail to even try to implement those solutions.
Hi Anonymous
Can you see green icon "Granted for ..." on the right side of "Workspace..." as below? If you couldn't see green icon, the admin hasn't grant consent for it. That "Grant admin consent for..." checkbox is grayed out on your screen.
Please refer to blog as below for more details about "Grant admin consent for..." function.
For reference: Enable the admin consent workflow
Best Regards,
Rico Zhou
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- Anonymous5 years agoNot applicable
I don't quite follow. The "Admin consent required" field says "No", just like it does for Dataset.ReadWrite.All (which is working just fine). Why would I need admin consent for Workspace when it says I don't need it, and when Dataset also says I don't need it (and it's working)?
- Anonymous5 years agoNot applicable
Also, I tried that link you posted, but I don't have rights to those options, so they're all grayed out.
- Anonymous5 years agoNot applicable
Hi Anonymous
App owns data (Service principal) doesn't need you to add api permission.
What kind of App did you register in Azure Portal, app owns data (master user) or user owns data?
Please check your app, and the parameter you use in request body.
For reference:
Register an Azure AD application to use with Power BI
Here I found some post with
Power Bi REST API - 401 Authorization error when using Service Principals
Power Bi REST API - 401 Authorization error when using app secret
Best Regards,
Rico Zhou
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- Anonymous5 years agoNot applicable
I'm not sure what you mean by this:
"App owns data (Service principal) doesn't need you to add api permission. What kind of App did you register in Azure Portal, app owns data (master user) or user owns data? Please check your app, and the parameter you use in request body."
I registered my app already and it has been working just fine for years. It is only now that I'm trying to pull a list of Workspaces via the API that it's giving me the unauthorized error.
Also, as I mentioned above, I have already looked at those posts and they do not address my issue. I'm not pulling Tenant info.
Maybe you need some kind of special permissions to be able to access Workspace level classes, but if that's the case, I don't know where to go to get that permission.