2012-08-02 35 views
6

Chúng tôi đang xây dựng một ứng dụng sử dụng ACS. kịch bản sử dụng của chúng tôi trông như thế này:Azure ACS - Ứng dụng chuyển tiếp của bên - ReturnURL có thông số?

  1. Người dùng nhận được một URL như thế này https://our.application.com/?requestId=123456 qua email và nhấp chuột vào nó
  2. Người dùng được chuyển hướng đến màn hình LiveID đăng nhập
  3. Sau khi đăng nhập, ACS chuyển tiếp người dùng cho chúng tôi, nhưng để https://our.application.com/

Thật không may, có vẻ như cài đặt "URL trả về" trong "Bên chuyển tiếp" trên "Cổng điều khiển truy cập" chỉ là một chuỗi cố định. Có cách nào để truyền bá yêu cầu ban đầu tới nó không? Nếu không, bạn sẽ đề xuất cách giải quyết nào?

Trả lời

3

Tôi tin rằng câu trả lời là không và tôi khuyên bạn nên sử dụng cookie để lưu trữ thông số.

+0

Cảm ơn bạn đã đề xuất :-) –

+0

Thực ra bạn có thể làm điều đó mà không cần cookie - xem các câu trả lời khác. –

4

Câu trả lời thực sự là có, nhưng không phải không có một chút công việc. Ở bước 3, URL trả lại của bạn đang bị ghi đè bởi URL bạn đã định cấu hình trong ACS RP của mình bằng trang đăng nhập ACS mặc định. Đây là trang mà ACS lưu trữ cho bạn theo mặc định, nơi bạn chọn nhà cung cấp danh tính của mình. (Bạn có thể không phải lúc nào cũng nhìn thấy nó trong trình duyệt, nó sẽ tự động chuyển hướng nếu bạn chỉ có một IDP được định cấu hình.)

Bạn có thể yêu cầu ACS sử dụng trang đăng nhập tùy chỉnh mà bạn lưu trữ để URL gốc này được lưu. Bạn có thể tải xuống trang đăng nhập ACS mặc định từ cổng ACS để làm việc.

Phần phức tạp xuất phát từ thực tế là các nhà cung cấp nhận dạng khác nhau sử dụng các giao thức khác nhau sử dụng các cơ chế khác nhau để lưu URL gốc này.

Một số mẫu thảo luận và mã hơn nữa về vấn đề này có thể được tìm thấy ở đây, và bạn có thể tìm ra giải pháp hơn nữa cho vấn đề này ở những nơi khác trên web:

How do I get the return URL working properly again after downloading a login page from Azure ACS?

+1

OK, tôi đã thử điều này, nhưng có vẻ như LiveID không thích thông số & cx. Tôi tiếp tục nhận được "Yêu cầu không được định dạng đúng". lỗi. Kết thúc với giải pháp Cookie sau khi tất cả. Tuy nhiên, nếu bạn biết điều gì có thể là nguyên nhân của việc này - tôi muốn biết :-) Đề xuất của bạn đã giúp tôi theo cách khác - tôi muốn trong một số trường hợp chỉ trình bày một tùy chọn IdentitiyProvider thay thế liệt kê tất cả chúng. –

+0

Đoán đầu tiên của tôi là sự cố mã hóa URL. Nếu bạn đã gửi cho tôi một ví dụ tôi có thể nói với bạn chắc chắn :) –

0

Nếu bạn muốn cung cấp một "ReturnUrl" qua Tài khoản ACS + Microsoft bạn có thể truy vấn các trang đăng nhập ACS qua IdentitiyProviders.js và vượt qua một "bối cảnh", ví dụ như: https://MyACS.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=MyRealm&reply_to=&context=foooobar&request_id=&version=1.0&callback=&wfresh=0

kết quả là bạn sẽ nhận được Đăng nhập URL cho tài khoản với tham số wctx Microsoft: https://login.live.com/login.srf?wa=wsignin1.0&wtrealm=...&wp=MBI_FED_SSL&wctx=cHI9d3NmZWRlcmF0aW9uJnJtPXVybiUzYW9uZW9mZml4eCUzYWRldiUzYWRlZmF1bHQmY3g9Zm9vb29iYXI1 < - foobar.

Sau quá trình đăng nhập, returnUrl được định cấu hình của bạn được gọi với tham số wctx (trong ví dụ của tôi, bạn sẽ nhận được "foobar").