1

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.UseOpenIdConnectAuthenticationStartup.Auth.cs

問題は、「ClaimsPrincipal.Current」にあるクレームの唯一のタイプが「CookieAuthentication」であるようです - http://schemas.microsoft.com/identity/claims/objectidentifierクレームがありません。

また...Microsoft OAuthウィンドウはブラウザで開かれません...しかし、エラーはActiveDirectory関連のコード内にあります...そのコードはそもそもOAuthトークンを必要としないはずですよね?

4

2 に答える 2

0

少なくとも私にとって考えられる回避策は、Web アプリ + oauth ワークフローではなく、Azure AD で "ネイティブ アプリ" セットアップを使用し、次のワークフローに従うことです。

https://msdn.microsoft.com/en-US/library/dn877545.aspx

于 2015-04-27T08:00:55.047 に答える