2016-04-29 6 views
11

私はOffice 365カレンダーのコンテンツにアクセスする必要があるアプリケーションを作っています。 このアプリケーションでは、ログインしてデータを取得するための直接的なユーザー操作は必要ありません。したがって、このトークンを取得するために標準のOAuthの方法を使用することはできません。O365カレンダーの承認トークンを取得

私はGoogleのカレンダーの方法に少し慣れていました。それには、対称的なRSAキーを含む「サービスアカウント」ロジックがあり、O365のようなものを見つけようとしました。

私がこのブログ見つけた: https://blogs.msdn.microsoft.com/arsen/2015/09/18/certificate-based-auth-with-azure-service-principals-from-linux-command-line/ アプリケーションを設定し、接続を許可するように、両方の側ですべてのキーを設定する私をたくさん助けました。結局、私はそれを動作させ、トークンを得て、リソースグループをリストアップしました。

すべては問題なく、私はそれをMicrosoft Graph APIで非常に簡単に動作させるためにエクスプロイトしました。 So: - 私のアプリケーションのAzure管理の権限にMicrosft Graph APIを追加し、すべてのユーザーのカレンダー(アプリケーションの権限と委任された権限)にすべての読み取り/書き込みアクセス許可を追加しました - トークンを再生成しました。権利を追加することができます - このトークンを使用してカレンダーのリストを取得しました

これは決して機能しませんでした。私はトークンを持っており、その要求は私にそれとの良いスコープを与えます。だから、私は正しいアプリ、そしてすべてにいることを知っている。 outlook.office.comにトークンを渡すと、次のメッセージが表示されます。<>

私はたぶんどこかのステップを逃しましたが、どこに見つけることができません。私の要求で?私のAzureアカウントで?

お願いします。

リクエスト(何かぼやけていない、とにかくテストアカウントのみ)。

はトークン要求を取得:

POST /6a23b9c1-04fc-4782-b08c-786d2a16c95d/oauth2/token HTTP/1.1 
Host: login.microsoftonline.com 
Content-Type: application/x-www-form-urlencoded 
Cache-Control: no-cache 
Postman-Token: f7b2884d-44e9-c48a-6245-453be490758c 

grant_type=client_credentials&client_id=0577ff63-730e-418a-a68f-6cbc590b6874&resource=https%3A%2F%2Foutlook.office.com%2F&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1dCI6ImxhVkMzbEd3K3hKWkpkTUQrbUpmdmRoU1V2bz0ifQ.eyJhdWQiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNmEyM2I5YzEtMDRmYy00NzgyLWIwOGMtNzg2ZDJhMTZjOTVkL29hdXRoMi90b2tlbiIsImlzcyI6IjA1NzdmZjYzLTczMGUtNDE4YS1hNjhmLTZjYmM1OTBiNjg3NCIsInN1YiI6IjA1NzdmZjYzLTczMGUtNDE4YS1hNjhmLTZjYmM1OTBiNjg3NCIsImp0aSI6IjAuMTgyOTg1ODUzNjM2NjM3MzMiLCJuYmYiOiIxNDYxOTQyODU2IiwiZXhwIjoiMTUyMjQyMzg1NiIsImlhdCI6MTQ2MTk0Mzg1Nn0.Czm9ks_jrEVViUDjfMF1uVUlf5sZrCSGtCmisFn3c8119KQ-OczLpWbpU3crJjidiP2y-xcSGjRSCGYJPiwq2Qks45_97-jBe_fBPoJb5lni5QYT_2ep6OyaAnId4VxlF9WScxFfHEtLqOsqOZwB4c6_YXdOiy82SJ0sLqLgZrFlnqYn6uMXGWThEFKPR3qsolgO4Wn5lthFRwF__IuIpg2DnjyNIz2KVhqVLqqZ-pglzE_soaKldiAR4bAZMxlndhMCnoUADgfsR0PAaZ-AyM0me4K7FrGbLpaTdXU6M4v9edLM9J23dg82HOKdf0GDC6pCIxKmIsuTR8IxGfxoTw 

トークン答えを得る:

{ 
    "token_type" : "Bearer", 
    "scope" : "Calendars.Read Calendars.ReadWrite", 
    "expires_in" : "3600", 
    "expires_on" : "1461951871", 
    "not_before" : "1461947971", 
    "resource" : "https://outlook.office.com/", 
    "access_token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL291dGxvb2sub2ZmaWNlLmNvbS8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC82YTIzYjljMS0wNGZjLTQ3ODItYjA4Yy03ODZkMmExNmM5NWQvIiwiaWF0IjoxNDYxOTQ3OTcxLCJuYmYiOjE0NjE5NDc5NzEsImV4cCI6MTQ2MTk1MTg3MSwiYXBwaWQiOiIwNTc3ZmY2My03MzBlLTQxOGEtYTY4Zi02Y2JjNTkwYjY4NzQiLCJhcHBpZGFjciI6IjIiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC82YTIzYjljMS0wNGZjLTQ3ODItYjA4Yy03ODZkMmExNmM5NWQvIiwib2lkIjoiMGQyODJlMDgtZGZkOC00Y2YwLWJmYzMtYmQ2MDZmMDEyNzVhIiwic3ViIjoiMGQyODJlMDgtZGZkOC00Y2YwLWJmYzMtYmQ2MDZmMDEyNzVhIiwidGlkIjoiNmEyM2I5YzEtMDRmYy00NzgyLWIwOGMtNzg2ZDJhMTZjOTVkIiwidmVyIjoiMS4wIn0.L8mP4t_Zmxfl5vJQwEaOsd-ere81jtz9ltzxk0TA0qA_hwRIYNVmHrydyPTHHQC7Jv3M6hiSnSVyVeXX_uYNFkPRZ3Sy_XOjmOF5xslMrw1niqE6J7OhQ5PEPmOfa0mQoWManChemDV5JCdxNOotBd4xes_jzg9tLMihzpqBcAUo3zGn8q5PT7AG-pydOEaHCWwDSKlHlFkBjZ3y_NTtQadDSR9aE2H6DOtP5-hXCpHqzkZODTZCuSBQRz1vCshcd8kZiuX_ebxItlJ8JU-zUr1YJFy9jww0NtROOB71xJP9IUf2NjMS-rQvR2qL8vfLPTArpgQFRU9cCZ4KpbVs3Q" 
} 

カレンダーリスト要求:空が、ヘッダー内の

GET /api/v2.0/me/calendars HTTP/1.1 
Host: outlook.office.com 
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL291dGxvb2sub2ZmaWNlLmNvbS8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC82YTIzYjljMS0wNGZjLTQ3ODItYjA4Yy03ODZkMmExNmM5NWQvIiwiaWF0IjoxNDYxOTQ3OTcxLCJuYmYiOjE0NjE5NDc5NzEsImV4cCI6MTQ2MTk1MTg3MSwiYXBwaWQiOiIwNTc3ZmY2My03MzBlLTQxOGEtYTY4Zi02Y2JjNTkwYjY4NzQiLCJhcHBpZGFjciI6IjIiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC82YTIzYjljMS0wNGZjLTQ3ODItYjA4Yy03ODZkMmExNmM5NWQvIiwib2lkIjoiMGQyODJlMDgtZGZkOC00Y2YwLWJmYzMtYmQ2MDZmMDEyNzVhIiwic3ViIjoiMGQyODJlMDgtZGZkOC00Y2YwLWJmYzMtYmQ2MDZmMDEyNzVhIiwidGlkIjoiNmEyM2I5YzEtMDRmYy00NzgyLWIwOGMtNzg2ZDJhMTZjOTVkIiwidmVyIjoiMS4wIn0.L8mP4t_Zmxfl5vJQwEaOsd-ere81jtz9ltzxk0TA0qA_hwRIYNVmHrydyPTHHQC7Jv3M6hiSnSVyVeXX_uYNFkPRZ3Sy_XOjmOF5xslMrw1niqE6J7OhQ5PEPmOfa0mQoWManChemDV5JCdxNOotBd4xes_jzg9tLMihzpqBcAUo3zGn8q5PT7AG-pydOEaHCWwDSKlHlFkBjZ3y_NTtQadDSR9aE2H6DOtP5-hXCpHqzkZODTZCuSBQRz1vCshcd8kZiuX_ebxItlJ8JU-zUr1YJFy9jww0NtROOB71xJP9IUf2NjMS-rQvR2qL8vfLPTArpgQFRU9cCZ4KpbVs3Q 
Cache-Control: no-cache 
Postman-Token: e85ac526-c56a-4d5b-2f74-83f4033decb4 

回答:

Content-Length →0 
Date →Fri, 29 Apr 2016 16:44:59 GMT 
Server →Microsoft-IIS/8.5 
WWW-Authenticate →Bearer client_id="00000002-0000-0ff1-ce00-000000000000", trusted_issuers="[email protected]*", token_types="app_asserted_user_v1 service_asserted_app_v1", authorization_uri="https://login.windows.net/common/oauth2/authorize", error="invalid_token",Basic Realm="",Basic Realm="" 
X-BEServer →VI1PR08MB0910 
X-BackEndHttpStatus →401 
X-CalculatedBETarget →VI1PR08MB0910.eurprd08.prod.outlook.com 
X-DiagInfo →VI1PR08MB0910 
X-FEServer →AM3PR08CA0034 
X-MSEdge-Ref →Ref A: B612166BB1764A45B0F3BCE6DF9CB639 Ref B: A8D71806CB57091B57FD0130AABF9D85 Ref C: Fri Apr 29 09:45:00 2016 PST 
X-Powered-By →ASP.NET 
request-id →26f132ca-df5e-439f-bd4f-7d655ba7df21 
x-ms-diagnostics →2000008;reason="The token contains no permissions, or permissions can not be understood.";error_category="invalid_grant" 

答えて

4

ブログ専用投稿Building Daemon or Service Apps with Office 365 Mail, Calendar, and Contacts APIs (OAuth2 client credential flow)で、REST APIでアプリ専用アクセスを使用する方法をご覧ください。ブログの投稿はかなり古いので、outlook.office365.com/api/v1.0をoutlook.office.com/api/v2.0に置き換えてください。同じ手順に従って、Microsoft Graphのアプリ専用アクセス用にアプリを登録することもできます。

+0

私のリンク先は、ユーザーをログインさせるためのWebページを印刷する必要があります。何も表示せずにこのアプリケーションサーバー側を「承認」する方法はありますか?キーを使ってログインするだけですか?同意部分をユーザーのプロフィールで直接行うことはできますか? – Quadear

2

https://jwt.ioで働いたアクセストークンと比較して、アクセストークンに「役割」の主張がないことがわかりました。

enter image description here

私は私のテストテナントでこの問題を再現することはできません。

enter image description here

これが役立つことを願っています。しかし、ここであなたの参照のための結果を比較し、クライアントのアサートがあります。

関連する問題