2017-05-10 7 views
2

サーバーアプリケーションがMicrosoft Graphを使用して自分のExcelファイルとやりとりしたい。つまり、ファイルはアプリケーションに属し、アプリケーションの特定のユーザーには属しません。ユーザーの操作なしでMicrosoft Graphユーザーアカウントを使用するサービスを許可する方法?

Azure IDを持つアプリケーションを登録し、Microsoft Graphの「ユーザーがアクセスできるすべてのファイルにフルアクセスする」アクセス許可を与えました。

OAuthリソースオーナーのパスワード資格認定を使用しようとしています。

私はこのような認証トークンを取得することができます

POST https://login.microsoftonline.com/common/oauth2/token 
Content-Type: application/x-www-form-urlencoded 

grant_type=password 
&resource=https://graph.microsoft.com 
&client_id=<ID of application registered with Azure AD> 
&username=<Microsoft username> 
&password=<password>&scope=Files.ReadWrite.All 

をしかし、応答が唯一の範囲User.Readを示しています。

{ 
    "token_type": "Bearer", 
    "scope": "User.Read", 
    "expires_in": "3600", 
    "ext_expires_in": "0", 
    "expires_on": "1494467388", 
    "not_before": "1494463488", 
    "resource": "https://graph.microsoft.com", 
    "access_token": "eyJ0e...", 
    "refresh_token": "AQAB..." 
} 

そして、私はアカウントの1ドライブ内のファイルを一覧表示しようとすると、私がやりますエラーは発生しませんが、レスポンスにアイテムが含まれていません:

Request: 
GET https://graph.microsoft.com/v1.0/me/drive/root/children 
Authorization: bearer eyJ0e... 

Response: 
{ 
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('<account ID>')/drive/root/children", 
    "value": [] 
} 

同じアカウントでログインしたときに、グラフエクスプローラで同じリクエストを行います。応答には、そのアカウントの1つのドライブルートにあるすべてのアイテムが含まれています。

私は、OAuthクライアントの資格認定(calling Microsoft Graph in a serviceの手順に従って)が許可されているが、特定のユーザーアカウント(アプリケーションだけでなく)の承認を得ているため、私はそのユーザーのファイルにアクセスすることを期待します。

私は間違ったことをしていますか、またはリソース所有者パスワード資格認定を使ってファイルアクセスをサポートしていませんか?

後者の場合、アプリケーションでユーザーの資格情報を使用してMicrosoft Graphを介してユーザーの操作なしでExcelファイルを操作できるようにするにはどうすればよいですか?

UPDATE:

私が使用していたアカウントに割り当てられた管理者権限を持っていた、とAzureのポータルでのMicrosoftのグラフのためのアプリケーションのアクセス権を再設定し、それはまだ私のために働いていませんしています。

は、ここで私が使用しているアカウントの詳細、次のとおりです。

enter image description here

+0

ファイル自体がどこに格納されているかは不明です。言い換えれば、Excelファイルをどこに保存したいのですか?管理者独自のOneDriveの下にある場合は、サーバー側にリフレッシュトークンをキャッシュし、通常のファイルの読み取り/書き込みアクセス権を使用できます。 –

+0

もう1つの考え方 - SharePointチームサイトは、Excelファイルを個々のユーザーのドライブの外に保存するための別のオプションかもしれません。 –

+0

@SudhiRamamurthy私はログインしているユーザーアカウントのOneDriveルートにファイルを保存しています。私はユーザーのアカウントを使用する必要があると信じています。なぜなら、アプリケーションのみを許可すると、ファイルのアクセス権を取得できないからです。 SharePointチームサイトをご利用いただきありがとうございます。私はそれを調べます。 – Ergwun

答えて

1

は後に付与された「必要な権限」ブレードで(より良い管理者アカウントを使用して)Grant Permissionsをクリックしてみてください「すべてのファイルのユーザーへのフルアクセスを持っています」マイクロソフトグラフの権限にアクセスすることができます:リソース所有者のパスワードのフローを使用して、その取得のトークンの後 enter image description here

を、あなたはFiles.ReadWrite.Allscpでクレームを見つけるでしょう。次に、Microsoft Graph APIを呼び出してファイルを一覧表示することができます。「ユーザーがアクセスできるすべてのファイルへのフルアクセスを持っている」デリゲートを追加し、

  1. はネイティブアプリを登録します。

    更新ここ

    は、私は、リソースの所有者の流れを動作させる方法の手順でありますMicrosoft Graphの許可(上記の図のようにgrant permissionsボタンをクリックしないでください)。

    POST https://login.microsoftonline.com/common/oauth2/token のContent-Type:アクセストークンを付与リソース所有者のパスワードの資格情報を使用して取得する、唯一のscpクレームでUser.Readを見つけるアプリケーション/ x-www-form-urlencodedで grant_type =パスワード&のclient_id = XXXXXXXXXX &リソース=

  2. :グラントとアクセストークンを取得し、リソース所有者のパスワードの資格情報を使用して、示さ絵上記のように、あなたは Files.ReadWrite.All User.Read scpで請求を https://graph.microsoft.com/&username=XXXXXX&password=XXXXXXX

  3. クリックgrant permissionsボタンを見つけることができます

enter image description here

+0

私はAzureポータルのアプリ登録の権限に入ると、「ユーザーがアクセスできるすべてのファイルにフルアクセスできます」とすでに許可していました。私は管理者アカウントを持っているかどうかわかりません。その許可を与えることができれば、私には管理者権限があるのでしょうか? – Ergwun

+0

あなたに代わって許可に同意することができます。 adminは、テナント内のすべてのユーザーに代わって、アプリケーションの委任されたアクセス許可に同意することができます。私はあなたの問題を再現しました。許可の後、リソース所有者の流れが働きます。それを試して、それが動作するかどうかを教えてください。 –

+0

自分のアカウントに管理者権限が割り当てられていて、Azure Portalで登録済みのアプリケーションのMicrosoft Graph権限を再付与しましたが、まだ動作していません。使用しているアカウントの詳細については、私の質問の更新を参照してください。この振る舞いは、私の元の質問と同じです。 – Ergwun

0

これで問題はグラフAPIに対する権限によるものです。なぜなら、あなたはMicrosoft Graph Explorerの特定のユーザーの下にログインしているからです。あなたはすべてを見ることができます。あなたが一人の人間として認証されたという事実のためです...あなたが何も見ない理由は、 -onlyアクセス許可は機能しません。

+0

私は特定のユーザーとしてログインしていますが、「ユーザーがアクセスできるすべてのファイルにフルアクセスできます」というアクセス許可を与えても、そのユーザーのファイルを見ることができませんので、「Resource Owner Password Credentials Grant」を使用しています。奇妙なことは、私はエラーレスポンス(例えば無許可)を得られないということです。レスポンスに空の配列だけがあります。ドライブルートにあるすべてのファイルを取得する要求に応答した ' 'は、ログインしたユーザーの正しいIDです。 – Ergwun

+0

この質問は、マイクロソフトのチームが最もよく答えるトピックのようです。しかし、マイクロソフトがさまざまな認証フローのアクセス許可を許可している可能性があります。実際にデータを取得するサポートは機能していないようです。私はSO上の投稿を作成し、 'Microsoftグラフ'を追加することをお勧めします。 – jdave

+0

あなたは何を意味するのかよく分かりません。これは、SOのタグを付けたmicrosoftgraphの投稿です。 – Ergwun

関連する問題