Можете ли вы быстро получить доступ к PowerBI без имени пользователя и пароля

#azure #token #powerbi

#azure #токен #powerbi

Вопрос:

После дня и нескольких часов поиска в PowerBI и чтения примеров веб-приложения PowerBI я столкнулся со стеной, каков наилучший способ изменить нижеприведенный код

             var tokenCache = new TokenCache();
            var authContext = new AuthenticationContext(authorityUri, tokenCache);
            var token = authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri)).AccessToken;
  

чтобы незаметно получить токен доступа для power Bi rest API. Я знаю, что есть AcquireTokenSlientAsync, но когда я регистрирую свое приложение как WebApp, включая cliendID и clientSecret, это выдает ошибку 403.

В настоящее время мое веб-приложение регистрируется в dev powerbi как NativeApp и получает токен при каждом запросе. Но каждый раз появляется всплывающее окно.

Поскольку я использую токен доступа для встраивания различных отчетов на веб-страницу, было бы здорово, если бы кто-нибудь показал мне, как незаметно получить токен без использования имени пользователя и пароля.

Я пытался использовать var token = authContext.AcquireTokenSlientAsync(resourceUri, clientCredential);

Любая информация очень ценится.

Комментарии:

1. Выполняется ли первоначальная аутентификация приложения с использованием AAD? Являются ли отчеты, которые вы пытаетесь показать, специфичными для пользователя?

2. @JustLogic Первоначальная проверка подлинности приложения использует утверждения о получении проверки подлинности Microsoft graph, а затем да, отчеты, которые я пытаюсь использовать, зависят от пользователя

Ответ №1:

Основываясь на вашем комментарии, что вы можете сделать, это использовать токен «обновить», который вы получаете при первоначальной аутентификации. Этот начальный токен должен включать токен обновления, с помощью токена обновления вы можете использовать метод «AcquireTokenByRefreshToken» и передать новый ресурс (api power bi), для которого вам нужен токен доступа.

AuthenticationContext authContext = новый AuthenticationContext(полномочия, новый AdalTokenCache (утверждение.Значение));

var refresh_token = authContext .Кэш токенов.ReadItems().FirstOrDefault().refreshToken;

Учетные данные клиента = новые учетные данные клиента (идентификатор клиента, ключ приложения);

var соответственно = authContext.Приобретите токенбайрефрештокен (refresh_token, учетные данные, "https://analysis.windows.net/powerbi/api ");

Надеюсь, это поможет.

Комментарии:

1. спасибо за ваш ответ, только один вопрос, идентификатор клиента (AppKey) мы ссылаемся на PowerBI clientSecret после регистрации в качестве webapp? Спасибо

2. Также моя первоначальная аутентификация заключалась в использовании SessionTokenCache, поэтому я полагаю, что я получу токен из сеанса в webapi и получу его…

3. Да, идентификатор клиента и ключ приложения (секрет клиента) являются идентификаторами приложения, зарегистрированного в aad.

4. спасибо за ваши ответы, в конце концов я решил это с помощью refreshToken 🙂