7

Chúng tôi đang cố gắng triển khai xác thực Azure AD B2C bằng ứng dụng web bằng luồng lệnh. Chúng tôi có thể đăng nhập và chuyển hướng thành công đến đúng url bao gồm các mục chính xác trên url chuyển hướng (id_token & mã). Tuy nhiên, như bài viết này đề xuất (https://github.com/Azure/azure-content/blob/master/articles/active-directory-b2c/active-directory-b2c-reference-oidc.md#get-a-token) ứng dụng sau đó cần thực hiện yêu cầu POST xhr đến điểm cuối mã thông báo để truy xuất mã thông báo cho tài nguyên (web api) mà ứng dụng cần tương tác. Tuy nhiên, khi tôi thử và thực hiện một XHR POST tới điểm cuối mã thông báo đó (https://login.microsoftonline.com/ {tenant} /oauth2/v2.0/token?p=b2c_1_signinpolicy) trình duyệt (khá đúng) thực hiện kiểm tra preflight (một cuộc gọi OPTIONS) để xác định xem nó có thể gọi điểm cuối vì nó nằm trên một tên miền khác. Cuộc gọi OPTION hoạt động nhưng không chứa các tiêu đề bắt buộc (Access-Control-Allow-Origin) cho trình duyệt để cho phép cuộc gọi POST đến điểm cuối.Vấn đề CORS khi nhận được mã thông báo trong Azure AD B2C (Dòng lệnh Implict)

Tôi có thiếu gì đó hoặc đang làm điều gì sai?

Bất kỳ trợ giúp nào được đánh giá cao!

Jon

+0

Dường như luồng ngầm chưa được hỗ trợ, hãy xem https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-apps/ –

+0

@BojanResnik Có tôi thấy điều này mặc dù mọi thứ về Giao diện người dùng và tài liệu khác đề xuất khác. – Jon

Trả lời

6

Điểm cuối xác thực Azure AD (B2C hoặc cách khác) không hỗ trợ CORS, cũng như sẽ không bao giờ.

Đối với ứng dụng Javascript, chúng tôi sử dụng luồng ngầm với response_type=token hoặc response_type=id_token để nhận mã thông báo trực tiếp từ điểm cuối ủy quyền - không cần CORS. Hãy thử nó ra, nó sẽ hoạt động tốt.

Lý do chúng tôi nói rằng các ứng dụng Javascript không được hỗ trợ ngay bây giờ là vì sau một giờ, id_token/access_token bạn nhận được bằng phương pháp này sẽ hết hạn. Và chúng tôi không có cách nào để làm mới/nhận mã thông báo mới một cách âm thầm. Điều này có nghĩa là trong trường hợp tốt nhất, ứng dụng Javascript của bạn sẽ phải chuyển hướng đến AAD mỗi giờ.

Chúng tôi không nghĩ điều đó có thể chấp nhận được, vì vậy, chúng tôi đang nghiên cứu một tính năng sẽ giải quyết vấn đề này. Nhưng hiện tại, chúng tôi sẽ tiếp tục gọi các ứng dụng Javascript không được hỗ trợ.

+0

Cảm ơn bạn đã trả lời - chúng tôi nhận thấy rằng mã C# của chúng tôi hơi sai một chút nên giờ đây tất cả đều hoạt động như mong đợi. – Jon

+0

Có bất kỳ cập nhật nào về vấn đề này hay không, tôi đang gặp phải vấn đề tương tự và phải đối mặt với vấn đề gốc xuyên suốt. –

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