首页 文章

具有ADAL登录经验的Web和Windows客户端应用程序的常见Oauth

提问于
浏览
0

我正在开发一种可以作为 Windows Application(Desktop Client) 或通过 HTML5 (Web Client) 访问的产品 . 我正在努力 integrate Power BI reports 进入我的产品 . 要访问集成Power BI报告所需的Power BI API,我使用https://powerbi.microsoft.com/en-us/documentation/powerbi-developer-register-a-client-app/创建了客户端ID

现在我创建了一个使用客户端ID访问Power BI API的类,并使用以下行生成访问令牌:

token = authContext.AcquireToken(resourceUri, ClientID, new Uri(redirectUri),PromptBehavior.RefreshSession).AccessToken;

哪里

resourceUri = Uri to PowerBI APIs

redirectUri = https://login.microsoftonline.com/common (Multi-Tenant)

在桌面客户端上,AcquireToken()方法运行正常,并为我提供了一个输入AD登录凭据的弹出窗口 . 但是当从HTML5客户端执行并抛出异常时,此方法将失败

An exception of type 'System.InvalidOperationException' occurred in Microsoft.IdentityModel.Clients.ActiveDirectory.dll but was not handled in user code.
Additional information: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

我在一些博客中读到,弹出用于Oauth身份验证的登录窗口是基于浏览器的 . 如果是这样,为什么从HTML5客户端调用时无法弹出?

是否有可能获得类似的弹出式 Login window using ADAL & Oauth for HTML5 client .

在这方面,任何帮助都将受到赞赏 .

1 回答

  • 0

    您在桌面上看到的弹出窗口是一个完整的窗口形式 - 显然无法从服务器端运行的网站的代码隐藏中打开 . 您需要注册两个不同的clientID,一个用于本机客户端(桌面),一个用于机密客户端(网站) . 完成后,您需要在访问令牌获取中驱动OpenId COnenct登录,或者您需要驱动oauth2授权请求 - 所有表单服务器端代码并使用浏览器表面作为与用户交互的机制 . 有关示例,请参阅https://azure.microsoft.com/en-us/documentation/samples/active-directory-dotnet-webapp-webapi-openidconnect/,只需使用Power BI更改自定义API . HTH

相关问题