2017-03-21 8 views
0

office365のドメイン内の各ユーザーの電子メールの読み取り/書き込み/更新を試みています。私はAzure Active DirectoryとAzureアプリケーションを使用しています。私はアカウントの管理者です。私はこの段階でどれが必要なのかわからないので、全面的に許可を得ました。office365ドメイン(nodejs)のAzure委任メール読み取り

私はNodejsでプログラミングしています。だから...

  1. 自分のアプリケーションにアクセスできるように、Azureに対してOAuthを使用して自分のアプリを認証します。 < - WORKS。
  2. このURLのアカウントに対する管理者の権利は、https://login.microsoftonline.com/common/adminconsent?client_id='+clientID+'&redirect_uri'+uriclientIDおよびuri)と置き換えてください。これにより、Microsoftプラットフォームに対する認証にリダイレクトされます。 (デバッグ中)あなたはここで、私が要求したすべての権限を見ることができます:https://login.windows.net/[my-app-tenant-id]/oauth2/token:私は許可を受け入れると enter image description here

  3. それからトークンを要求私のアプリに私を返します。アクセストークンが返されます。これまでのところとても良い

  4. その後、私はこのトークンを使って私の組織の電子メールのユーザーを読んでいます(私のように、私はそれを試してみたユーザーがいくつかあります)。それはhttps://graph.microsoft.com/v1.0/[[email protected]/messagesに行きます。トークンをbearerとして渡します。 { "コード": "InvalidAuthenticationToken"、 "メッセージ": "アクセストークンの検証に失敗"、 "innerError":{ 「要求 これは問題ですが、私は

    { "エラー" を取得します-id ": "[リクエストID]"、 "日付": "2017-03-21T17:31:24" }}}

Iは、URLのカップルでこれを試みました例えば、Outlook APIのように、このURLはhttps://outlook.office.com/api/v2.0です。しかし、それは単純なOAuthのた​​めだと思うし、とにかくこの方法では動作しないだろう。

アクセストークンを有効にする方法を誰かが説明できる場合は、素晴らしいと思います。

はFYI、私は同時にNPMライブラリazure-graphapiをテストし、使用し、また午前:

var clientID = '[client id]' 
    var clientSecret = '[client secret]' 
    var tenant = '[tenant id]' 
    var graph = new GraphAPI(tenant, clientID, clientSecret); 
    graph.get('users/', function(err, user) { 
     resp.json({users: user});  
    }) 

私は、ユーザーのリストを取得することができます。だからおそらく私はばかげていて、何とかこれを使ってユーザーの電子メールを読むことができますか?たぶん、あなたは、アクセストークンを取得するリクエストヘッダにミスを犯している

おかげ

答えて

0

ご覧のとおり、https://login.microsoftonline.com/common/oauth2/v2.0/tokenエンドポイントにPOSTリクエストを送信してトークンを取得し、mail.readという値をこのリクエストのscopeパラメータに渡しました。

enter image description here

は今、私はそのトークンを持つユーザーの電子メールを取得することができています。

enter image description here

+0

だから、私はADでユーザーのためではなく、ユーザーにログインすると、自分のデータにアクセスするに作用することができるアプリを作成しようとしている....これは標準のOAuthのた​​めだと思います。 ... – amlwwalker