2016-10-04 2 views
0

일 후와 PowerBI에 검색 몇 시간없이 PowerBI 웹 애플리케이션의 샘플을 읽을 수있는, 내가 벽에 달렸다는 아래 코드이 acquiretokesilently PowerBI위한 사용자 이름 및 암호

  var tokenCache = new TokenCache(); 
      var authContext = new AuthenticationContext(authorityUri, tokenCache); 
      var token = authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri)).AccessToken; 
을 변경하는 가장 좋은 방법은 무엇입니까

액세스 동점을 얻으려면 전력 Bi 나머지 API에 대해서는 Sliently입니다. AcquireTokenSlientAsync가 있다는 것을 알고 있지만 cliendID 및 clientSecret을 포함하여 WebApp로 등록하면 403 오류가 발생합니다.

현재 내 웹 앱은 개발자의 powerbi에 NativeApp로 등록되어 있으며 각 요청마다 토큰을 받고 있습니다. 그러나 매번 팝업이 나타납니다.

웹 페이지에 다양한 보고서를 포함시키기 위해 액세스 토큰을 사용하고 있기 때문에 누군가가 UserName과 암호를 사용하지 않고 토큰을 sliently 얻는 방법에 대한 빛을 보여줄 수 있다면 좋을 것입니다. 내가 var token = authContext.AcquireTokenSlientAsync(resourceUri, clientCredential);

어떤 통찰력을 사용하여 시도했다

이 많이 감사합니다.

+0

AAD를 사용하는 초기 앱 인증입니까? 보고서가 사용자별로 표시하려고합니까? – JustLogic

+0

@JustLogic 초기 응용 프로그램 인증은 클레임을 검색하는 Microsoft Graph 인증을 사용하고 있으며 사용하려고하는 예보고는 사용자 특정 –

답변

0

귀하의 의견에 따라 할 수있는 것은 초기 인증에서 얻은 "새로 고침"토큰을 사용하는 것입니다. 초기 토큰에는 새로 고침 토큰이 포함되어야합니다. 새로 고침 토큰을 사용하면 "AcquireTokenByRefreshToken"메서드를 사용하고 액세스 토큰이 필요한 새 리소스 (power bi api)를 전달할 수 있습니다.

 
AuthenticationContext authContext = new AuthenticationContext(Authority, new AdalTokenCache(claim.Value)); 

var refresh_token = authContext.TokenCache.ReadItems().FirstOrDefault().RefreshToken; 

ClientCredential credential = new ClientCredential(clientId, appKey); 

var resp = authContext.AcquireTokenByRefreshToken(refresh_token, credential, "https://analysis.windows.net/powerbi/api"); 

희망이 있습니다.

+0

답장을 보내 주셔서 감사합니다. 단 하나의 질문 인 clientCredential (appKey)은 PowerBI clientSecret webapp로 등록한 후? 감사합니다 –

+0

또한 내 초기 인증은 SessionTokenCache를 사용했기 때문에 webapi의 세션에서 토큰을 가져 와서 가져 오는 것으로 가정합니다. –

+0

예 클라이언트 ID와 appkey (클라이언트 비밀 번호)는 등록 된 앱의 ID입니다 아드와 함께. – JustLogic

관련 문제