2

複数のユーザーのカレンダーを確認したい。したがって、アプリのみのアクセスが必要です (アプリにはログインしているユーザーよりも多くの権限が必要なため)。

「古い」API では、次の手順に従うことでこれが可能でした: https://msdn.microsoft.com/en-us/office/office365/howto/building-service-apps-in-office-365

新しい Microsoft Graph API では、これは機能しないようです。これを機能させる方法はありますか?アプリで必要なすべての Office 365 API 関数に Microsoft Graph API を使用したいと考えています。

前もって感謝します!

(編集:エラーメッセージを含む。)

Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: AADSTS70002: 資格情報の検証中にエラーが発生しました。AADSTS50012: クライアント アサーションに無効な署名が含まれています。トレース ID: 718db531-d789-4b45-ae9d-c2e53f3786fd 相関 ID: 6a157ae5-7dc3-4470-81c0-f410e14f9c04 タイムスタンプ: 2015-11-27 12:40:33Z ---> System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert. bei System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

完全な委任権限と完全なアプリケーション権限を与えました。これが私が得るトークンです:

{"token_type":"Bearer","expires_in":"3599","scope":"Calendars.Read Calendars.ReadWrite Contacts.Read Contacts.ReadWrite Directory.AccessAsUser.All Directory.Read Directory.Read.All Directory.ReadWrite.All Directory.Write Files.Read Files.Read.All Files.Read.Selected Files.ReadWrite Files.ReadWrite.All Files.ReadWrite.AppFolder Files.ReadWrite.Selected full_access_as_user Group.Read.All Group.ReadWrite.All Mail.Read Mail.ReadWrite Mail.Send Notes.Create Notes.Read Notes.Read.All Notes.ReadWrite Notes.ReadWrite.All Notes.ReadWrite.CreatedByApp offline_access openid People.Read People.ReadWrite Sites.Read.All Tasks.ReadWrite User.Read User.Read.All User.ReadBasic.All User.ReadWrite User.ReadWrite.All user_impersonation","expires_on":"1448974661","not_before":"1448970761","resource":"https://graph.microsoft.com/","pwd_exp":"582983","pwd_url":"https://portal.microsoftonline.com/ChangePassword.aspx","access_token":"eyJ---------zQXg","refresh_token":"AAABAA--------pYSAA","id_token":"eyJ0eXAi-------4wIn0."}

自分以外のカレンダーを読む権限がありません。

編集: App-Token を取得できません...ここに私のコードがあります (App-Token は、新しいグラフ API を使用していない前に機能していました)

        string authority = appConfig["AuthorizationUri"].Replace("common", appConfig["ida:TenantId"]);
        AuthenticationContext authenticationContext = new AuthenticationContext(authority, false);
        string certfile = appConfig["o365_CertPath"];

        X509Certificate2 cert = new X509Certificate2(certfile, // password for the cert file containing private key 
                                                    appConfig["o365_CertPassword"],
                                                    X509KeyStorageFlags.MachineKeySet);

        ClientAssertionCertificate cac = new ClientAssertionCertificate(appConfig["ida:ClientId"], cert);

        AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync("https://outlook.office365.com", cac);
        this.currentAccessToken = authenticationResult.AccessToken;

AcquireTokenAsync でさまざまなエンドポイントを試しました。私はいつもエラーメッセージを受け取ります:

{"AADSTS70002: 資格情報の検証エラー。AADSTS50012: クライアント アサーションに無効な署名が含まれています。\r\nトレース ID: 6fe2a6bd-77d3-47a8-83d4-e10aea69b88a\r\n相関 ID: 53071578-1c16-4c17-8f77-fc5821c18d4b\r\ nタイムスタンプ: 2015-12-02 08:05:25Z"}

再度、感謝します

4

1 に答える 1

0

同様の問題がありました。PnP サイトの Create-SelfSignedCertificate.ps1 を使用していました。Makecert の使用に切り替えたところ、すべてが機能しました。基本的に、ここでリチャーズの正確な指示に従いましたhttp://blogs.msdn.com/b/richard_dizeregas_blog/archive/2015/05/03/performing-app-only-operations-on-sharepoint-online-through-azure-ad.aspx

于 2016-01-29T18:41:32.353 に答える