2016-06-22 9 views
1

PowerBI REST APIを使用してPowerBIレポートを表示するためのテストasp.net mvcアプリケーションを作成しました。私はAzure Active Directory認証をサイトの認証メカニズムとして使用しています。 Power BI APIにアクセスするために、MVC Azure AD認証フレームワークの資格情報を再利用する方法はありますか?現在、アプリケーションがアプリケーションのアクセストークンを取得する要求を出すと、ユーザーは再度ログインする必要があります。PowerBI REST APIを使用するとシングルサインオン

答えて

0

Azure ADで認証するときにトークンを戻す必要がある場合は、Token Cacheを使用して、後で使用するためにユーザートークンを保存できます。 powerbi apiのアクセストークンを取得する必要がある場合、戻ってきた最初のトークンからリフレッシュトークンを使用することができます。

public JsonResult GetPowerBiToken() 
{ 
    var clientId = ConfigurationManager.AppSettings["ida:ClientId"]; 
    var appKey = ConfigurationManager.AppSettings["ida:ClientSecret"]; 
    var aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"]; 
    var tenantId = ConfigurationManager.AppSettings["ida:TenantId"]; 


    string Authority = aadInstance + tenantId; 
    var claim = CurrentUserClaims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier); 
    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"); 

    return Json(new { Token = resp.AccessToken }, JsonRequestBehavior.AllowGet); 
} 

希望します。

+0

ありがとう、@JustLogic。あなたのアプローチを実装しようとしたところ、RefreshTokenプロパティがauthContext.TokenCache.ReadItems()。FirstOrDefault()に存在しないことがわかりました。私はその後、別のアプローチを使用しました(私の答えを見てください)。 – tjuni

1

この問題を解決するには、https://github.com/Azure-Samples/active-directory-dotnet-graphapi-webの例をご覧ください。彼らはAADに対して認証するためのコードを示し、トークンを使ってgraphAPIにアクセスします。彼らのアプローチを使って、トークンを使ってPowerBI APIにアクセスしました。

関連する問題