2016-08-30 2 views
0

Я работаю над продуктом, к которому можно получить доступ либо как Windows Application(Desktop Client), либо через HTML5 (Web Client). Я пытаюсь сделать integrate Power BI reports в свой продукт. Чтобы получить доступ к API, питания BI, которые необходимы для интеграции отчетов питания BI, я создал идентификатор клиента с помощью https://powerbi.microsoft.com/en-us/documentation/powerbi-developer-register-a-client-app/Общий Oauth с ADAL Опыт работы с веб-сайтом и Windows Client App

Теперь я создал класс для доступа к API, питания BI с использованием идентификатора клиента и создать маркер доступа, используя следующую строку:

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

где

resourceUri = Uri to PowerBI APIs 

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

Когда на клиенте Desktop, метод 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.

Любая помощь будет оценена в этом отношении.

ответ

0

всплывающее окно, которое вы видите на рабочем столе, представляет собой полноценную форму окна, которая явно не может быть открыта из кода сайта веб-сайта, работающего на стороне сервера. Вам необходимо зарегистрировать два разных идентификатора клиента, один для собственного клиента (рабочий стол), как вы уже сделали, и один для конфиденциального клиента (веб-сайта). В этом случае вам нужно ввести знак OpenId COnenct в + доступ к токену доступа или вам нужно будет выполнить запрос авторизации oauth2 - весь код на стороне сервера формы и использовать поверхность браузера в качестве механизма взаимодействия с пользователем. См., Например, https://azure.microsoft.com/en-us/documentation/samples/active-directory-dotnet-webapp-webapi-openidconnect/, просто измените пользовательский API с помощью Power BI. HTH

+0

Спасибо Vittorio за ваш быстрый ответ. – Kiran

+0

Итак, это означает, что у нас не может быть единого знака для публичных и конфиденциальных клиентов? – Kiran

+0

Собственные приложения представляют свою сессию через токены обновления, веб-приложения представляют свои сессии через файлы cookie. Совместное использование одного и того же идентификатора клиента не облегчит перевод между представлениями сеанса. – vibronet

 Смежные вопросы

  • Нет связанных вопросов^_^