MVC5 で使用するために、ここに示す WebAPI の例を適応させようとしています。
https://msdn.microsoft.com/en-US/library/dn931282.aspx#Configure
通常のAccountController
ログイン システムを使用していますが、OAuth を介して PowerBI にログインするユーザーも必要なので、PowerBI REST API を介してデータセットを取得できます。しかし、私ClaimsPrincipal.Current.FindFirst(..)
はnull
.
private static async Task<string> getAccessToken()
{
// Create auth context (note: token is not cached)
AuthenticationContext authContext = new AuthenticationContext(Settings.AzureADAuthority);
// Create client credential
var clientCredential = new ClientCredential(Settings.ClientId, Settings.Key);
// Get user object id
var userObjectId = ClaimsPrincipal.Current.FindFirst(Settings.ClaimTypeObjectIdentifier).Value;
// Get access token for Power BI
// Call Power BI APIs from Web API on behalf of a user
return authContext.AcquireToken(Settings.PowerBIResourceId, clientCredential, new UserAssertion(userObjectId, UserIdentifierType.UniqueId.ToString())).AccessToken;
}
サンプル アプリ (WebAPI プロジェクト) ではすべて正常に動作します。で OWIN も構成しましapp.UseOpenIdConnectAuthentication
たStartup.Auth.cs
。
問題は、「ClaimsPrincipal.Current」にあるクレームの唯一のタイプが「CookieAuthentication」であるようです - http://schemas.microsoft.com/identity/claims/objectidentifierクレームがありません。
また...Microsoft OAuthウィンドウはブラウザで開かれません...しかし、エラーはActiveDirectory関連のコード内にあります...そのコードはそもそもOAuthトークンを必要としないはずですよね?