2016-04-29 35 views
11

Tôi đang tạo ứng dụng cần truy cập vào nội dung của Lịch Office 365. Ứng dụng đó không cần hành động trực tiếp của người dùng để đăng nhập và truy xuất dữ liệu của nó, vì vậy tôi không thể sử dụng cách OAuth tiêu chuẩn để nhận mã thông báo này.Nhận mã thông báo được ủy quyền cho Lịch O365

Tôi hơi quen thuộc với cách lịch của Google để thực hiện điều đó, với logic "Tài khoản dịch vụ", liên quan đến khóa RSA không có tính biểu tượng để làm điều đó, vì vậy tôi đã cố gắng tìm một thứ tương tự cho O365.

tôi đã tìm thấy blog này: https://blogs.msdn.microsoft.com/arsen/2015/09/18/certificate-based-auth-with-azure-service-principals-from-linux-command-line/ đã giúp tôi rất nhiều cấu hình một ứng dụng và thiết lập tất cả các phím trên cả hai bên để cho phép kết nối. Cuối cùng, tôi quản lý để làm cho nó hoạt động, có một mã thông báo và liệt kê các nhóm tài nguyên.

Tất cả đều ổn và tôi đã làm cho nó hoạt động khá dễ dàng với API đồ thị của Microsoft. Vì vậy: - Tôi đã thêm API biểu đồ Microsft trong ủy quyền của ứng dụng vào Quản lý Azure và thêm tất cả quyền đọc/ghi vào lịch của tất cả người dùng (trong ủy quyền của ứng dụng và ủy quyền được ủy quyền) - Tôi đã tạo lại mã thông báo các quyền có thể được thêm vào nó - Tôi đã sử dụng mã thông báo này để nhận danh sách các lịch

Và nó không bao giờ hoạt động. Tôi có mã thông báo, và yêu cầu cho tôi những phạm vi tốt với nó. Vì vậy, tôi biết tôi đang sử dụng đúng ứng dụng và mọi thứ. Khi tôi đưa mã thông báo cho outlook.office.com, tôi có thông báo này: <>

Tôi có thể đã bỏ lỡ một bước nào đó, nhưng tôi không thể tìm thấy ở đâu. Trong yêu cầu của tôi? Trong tài khoản Azure của tôi?

Bất kỳ trợ giúp nào?

Các yêu cầu (không làm mờ bất kỳ thứ gì, chỉ là tài khoản thử nghiệm).

Nhận Yêu Cầu Mã:

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 

Nhận Mã trả lời:

{ 
    "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" 
} 

Lịch Danh sách Yêu cầu:

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 

trả lời trống rỗng, nhưng trong các tiêu đề:

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" 

Trả lời

4

Hãy xem bài đăng trên blog Building Daemon or Service Apps with Office 365 Mail, Calendar, and Contacts APIs (OAuth2 client credential flow) để biết hướng dẫn về cách sử dụng quyền truy cập chỉ ứng dụng với API REST. Vì bài đăng trên blog khá cũ, hãy thay thế outlook.office365.com/api/v1.0 bằng outlook.office.com/api/v2.0. Bạn cũng có thể làm theo các quy trình tương tự để đăng ký ứng dụng của bạn để truy cập chỉ dành cho ứng dụng cho Microsoft Graph.

+0

Tuto bạn liên kết với tôi vẫn cần in trang web để đăng nhập người dùng. Có cách nào để "Ủy quyền" phía máy chủ ứng dụng này cho người dùng mà không hiển thị bất kỳ điều gì không? Chỉ cần sử dụng các phím để đăng nhập? Tôi có thể thực hiện phần thỏa thuận trực tiếp trong hồ sơ của người dùng không? – Quadear

2

Sau khi so sánh với mã thông báo truy cập đã làm việc và của bạn trên https://jwt.io, tôi nhận thấy rằng yêu cầu "vai trò" bị thiếu trong mã thông báo truy cập của bạn.

enter image description here

Tôi không thể tái tạo vấn đề này trong đối tượng thuê thử nghiệm của mình.Nhưng ở đây là khẳng định của khách hàng so sánh kết quả để bạn tham khảo:

enter image description here

Hy vọng điều này sẽ giúp.

Các vấn đề liên quan