oauth
Add oauth(2) as an option to authenticate for e.g. web.contents.
This is enabled via Custom Connectors: https://docs.microsoft.com/en-us/power-query/startingtodevelopcustomconnectors
90 comments
-
Andreas Bosch commented
The code was copied from: https :// docs.leanix.net/ docs/custom-integrations
-
Andreas Bosch commented
So sad Microsoft is not willing to help us here.
Maybe this code helps some of you to get it done...
Copied from
let
BaseURL = "https://<domain>.leanix.net", // This is evaluated by Power BI Online to check if auto-refresh is possible without authenticationAuthKey = "APITOKEN_ENCODED", // Base64 Encoded "apitoken:API Token" string
AuthHeader = "Basic " & AuthKey, // Concatenate two strings for "Authorization:" Header in POST Request to get OAuth access token
AuthRelativePath = "services/mtm/v1/oauth2/token", // Here we get our access token from with our AuthKey
grant_type = "grant_type=client_credentials", // Indicates the type of grant presented in exchange for an authentication tokenEndpoint = "graphql", // The endpoint we are interested in
EndpointRelativePath = "services/pathfinder/v1/" & Endpoint, // We can call this HTTP REST Endpoint via GET to get all applications as JSON once we have the OAuth acccess TokengqlQuery = "{ ""query"": ""{allFactSheets(factSheetType:Application){edges{node{id name description ... on Application{lifecycle{asString} technicalSuitability technicalSuitabilityDescription businessCriticality businessCriticalityDescription functionalSuitability functionalSuitabilityDescription }}}}}}}}""}",
// We do a HTTP POST Request to BaseURL + AuthRelativePath with our AuthenticationKey in the Header and some extra data to get the access token in JWT format
JWT = Json.Document(Web.Contents(BaseURL, [RelativePath=AuthRelativePath, Headers=[#"Authorization"=AuthHeader, #"Content-Type"="application/x-www-form-urlencoded"], Content=Text.ToBinary(grant_type)])),
// OAuth 2.0 authentication is done and we use the access token to construct the Authorization Header for our HTTP GET Requests against the REST API Endpoint
BearerToken = "Bearer " & JWT[access_token],
Applications = Json.Document(Web.Contents(BaseURL, [RelativePath=EndpointRelativePath, Headers=[#"Authorization"=BearerToken, #"Content-Type"="application/json"], Content=Text.ToBinary(gqlQuery)]))
//... (now create your own specific tables)
in Applications -
Micah Rairdon commented
Looks like we still can't do anything for the cloud...
-
Anonymous commented
This "solution" also doesn't address use outside of PowerBI Desktop.
-
Phil Baker commented
Ha ha ha, This is a laughable response. So now I am to either carry on using Basic Auth on my APIs or start telling my customers: "Here download and follow these installation instructions to install this weird file before you can use Power BI for what it was intended to do". That's even worse than asking a client to follow instructions on how to generate an API key and I've never seen that work out well.
We considered Custom Connectors but didn't want to wear the cost of providing application support to 5000 customers.
I mean, I had to roll my own Basic Auth provider when we started working onto dotNET Core just to support Power BI and Excel. Did you hear me?! I rolled my own Auth provider to a data API to support your product; that's insane!
Please reopen this idea, please implement OAuth as a connector. I fail to understand how this can be hard for you to do or what Microsoft's strategic value is in not providing it.
-
Mike commented
Daniel there is a link posted in their response on how create custom connections.
-
Daniel (Australia) commented
Hi Miguel. I can understand you saying 'not planned', but you have not given us any alternative to connect to API's? Please provide a solution.
-
Anonymous commented
Disappointed. Not a relevant solution.
-
Pasquale commented
Very disappointing. The people was waiting for another kind of response. 581 votes can mean 581 Customers/Leads that potentially it could involve thousand times more users. A better explanation was the minimum.
-
Ionut N commented
An unexpected short answer after all that time. How about Power BI Online? What is the story around that ?
-
Anonymous commented
The article referenced states : "Data Connectors are currently only supported in Power BI Desktop", so how does this help Power BI Report Server ?
-
Anonymous commented
So the answer is 'no, you can do it yourself'
O_o -
Anonymous commented
killing the whole idea of self-service bi, making many APIs as data sources out of reach for the common user...
-
Michael Shparber commented
What??? Cmmon, team, you can do better than this! Please help - this is much needed!
Thanks! -
Anonymous commented
Disappointed
-
Callum commented
Very disappointing response.
-
Anonymous commented
so Microsoft is not going to support a standard that is widely used that customers are asking for and force us to make our own possibly flawed version of the standard ??
what the heck is going on at HQ ? are you guys in some other world all your own ? -
Roberto Bentsen commented
But as I understand this is not available in power bi service, correct?
-
mishware commented
Add oauth(2) as an option to authenticate for e.g. web.contents.
-
Callum commented
It's crazy to me that this is still outstanding after over 2 years, especially since there are On-Premise Microsoft products that rely on both OData and OAuth (CRM).