1

AADで保護されたAADで保護されたAADで保護されている を開発しました。Azure APIからSharePoint Online REST APIを呼び出すと、SharePointのオンラインで同じアクティブディレクトリが使用されます私の哀れなAPIとして。 SPのAPIを呼び出すためのAzure APIからSharePointオンラインREST APIを呼び出す

は、私はAzureのAPIは、SharePoint API これを呼び出すことと同じになり、認証、アクセストークンを前提とSharePointの を認証するためのアクセストークンを必要とし、私がやったことです:

  1. マイAzureのAPI

  2. (私は上の認証を行っている自動的に行われる)紺碧のActive Directoryに登録されている私は、暗黙的な流れを可能にするためのOAuth2のAzureアプリケーションのmanifest.jsonを更新:

    「oauth2AllowImplicitFlow」:真

  3. 私は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を実行するためのアクセストークンを取得する

+0

Microsoft GraphのSharePointの部分は、REST APIを使って何をしようとしていますか?これにより、認証フローが大幅に簡略化されます。 http://graph.microsoft.io/ – baywet

答えて

0

Azure ADを使用してWeb APIからダウンストリームWeb APIを呼び出すことも試みています。

説明に基づいて、クライアントからトークンを送信していないようです。ウェブAPIをリクエストする方法をコードで確認し、リクエストにトークンを追加してください。

+0

よろしくお願いします。どのようにダウンストリームwebapiの代理人にログインしてユーザーにログインすることができますか?あなたの方法を共有できますか? – Laleh

+0

Web APIの第1層のサーバー側コードは、提供したコードと同じです。クライアント側では、ブラウザで** OAuth 2.0のフロー**を使用してトークンを直接取得し、** Fiddler **を使用してリクエストを送信します。クライアント側の –

+0

私はAPIが晴れのスケジューラで実行されるので、私はオプションがないのですか? – Laleh

関連する問題