AADで保護されたAADで保護されたAADで保護されている を開発しました。Azure APIからSharePoint Online REST APIを呼び出すと、SharePointのオンラインで同じアクティブディレクトリが使用されます私の哀れなAPIとして。 SPのAPIを呼び出すためのAzure APIからSharePointオンラインREST APIを呼び出す
は、私はAzureのAPIは、SharePoint API これを呼び出すことと同じになり、認証、アクセストークンを前提とSharePointの を認証するためのアクセストークンを必要とし、私がやったことです:
マイAzureのAPI
(私は上の認証を行っている自動的に行われる)紺碧のActive Directoryに登録されている私は、暗黙的な流れを可能にするためのOAuth2のAzureアプリケーションのmanifest.jsonを更新:
「oauth2AllowImplicitFlow」:真
私はAzureのADアプリの設定ページから(委任権限の下で)ユーザーに代わって「すべてのサイトコレクションに読み取りおよび書き込みのアイテムやリスト」へのアプリのアクセスを許可された(「パーミッション他のアプリケーションへ」)。
は、私がアクセストークンを取得するために、このコードを試してみました:私は、ユーザーのトークンを取得するために言及し、このquestionに出くわした 、
string clientId = "xxxxxxxxxx";
string appKey = xxxxxxxxxxx";
string aadInstance = "https://login.microsoftonline.com";
string tenant = "mydomain.onmicrosoft.com";
string domain = "mydomain.onmicrosoft.com";
string resource = "https://mydomain.sharepoint.com";
AuthenticationResult result = null;
ClientCredential clientCred = new ClientCredential(clientId, appKey);
string authHeader = HttpContext.Current.Request.Headers["Authorization"];
string userAccessToken = authHeader.Substring(authHeader.LastIndexOf(' ')).Trim();
UserAssertion userAssertion = new UserAssertion(userAccessToken);
string authority = aadInstance + domain;
AuthenticationContext authContext = new AuthenticationContext(authority);
//result = await authContext.AcquireTokenAsync(resource, clientCred); // auth without user assertion (fails, app only not allowed)
result = await authContext.AcquireTokenAsync(resource, clientCred, userAssertion); // clientCred and userAssertion params have swapped places since Kirk's blog
return result.AccessToken;
しかしauthHeaderがnull authenticationContextを使用してADAL.jsを使用しています.acquireToken(clientId)、WebAPIへのAJAXリクエストのヘッダに結果のトークンを含める
これを私の紺碧のAPIにどのように含める必要があるのかわからないと思います。 ghtsまたはアイデアを使用してSharePointのオンラインAPIを実行するためのアクセストークンを取得する
Microsoft GraphのSharePointの部分は、REST APIを使って何をしようとしていますか?これにより、認証フローが大幅に簡略化されます。 http://graph.microsoft.io/ – baywet