2013-10-21 36 views
13

Tôi đã thử nghiệm các tính năng xác thực mới trong ASP.NET MVC 5 (trước đây tôi đã sử dụng DotNetOpenAuth).OpenID "Chung" trong ASP.NET MVC 5

Tôi hiểu rằng nhà cung cấp Google tích hợp sử dụng OpenID [1] (và nó hoạt động tốt), nhưng tôi muốn sử dụng nhà cung cấp OpenID của riêng mình khi xác thực.

Thật không may, tôi đã không thể tìm thấy một cách dễ dàng để thực hiện điều này với các tính năng vượt trội của ASP.NET MVC 5. Tôi đã xem qua nguồn của Microsoft.Owin.Security.Google và dựa trên điều này có vẻ như hoàn toàn có thể để thêm một nhà cung cấp OpenID mới.

Có cách nào dễ dàng hơn (có thể đã được tích hợp sẵn) để thêm nhà cung cấp OpenID mới vào ứng dụng ASP.NET MVC 5 không? Hay tôi phải viết một từ đầu (một phần mềm trung gian Owin mới)?

[1] http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on
[2] http://www.symbolsource.org/MyGet/Metadata/aspnetwebstacknightly/Project/Microsoft.Owin.Security.Google/2.0.1-rtw1-20924-641-dev/Release/.NETFramework,Version=v4.5/Microsoft.Owin.Security.Google

Trả lời

5

Tôi đang trong tình cảnh tương tự và tôi nghĩ rằng câu trả lời là "không".

Lớp chính là Microsoft.Owin.Security.Google.GoogleAuthenticationHandler triển khai trình xử lý phụ trợ OWIN. Thật khó để mã hóa cuộc gọi tới số https://www.google.com/accounts/o8/ud trong AuthenticateCoreAsync cũng như mã hóa cứng yêu cầu eXchange Thuộc tính trong ApplyResponseChallengeAsync. Nếu có một cách tốt hơn (tức là một lớp cơ sở OpenID), tôi cho rằng họ chắc chắn sẽ sử dụng nó thay vì mã hóa cứng hai điểm này. Tôi giả sử Microsoft đã không làm cho nó chung chung vì lý do lịch trình hoặc cảm thấy thiếu nhu cầu.

Tôi nghĩ rằng một phần mềm trung gian OpenID OWIN chung nguồn mở sẽ là một gói NuGet tuyệt vời.

+0

Cảm ơn. Tôi đoán tôi sẽ ở lại lười biếng và gắn bó với DotNetOpenAuth trong vài tuần tới, có lẽ ai đó xây dựng một middleware OpenId cho đến lúc đó;) –

+0

Tôi đã thành công trong việc nhận mã Google để làm việc cho Yahoo bằng cách thay đổi https://www.google. com/accounts/o8/ud vào https://open.login.yahooapis.com/openid/op/auth. Tôi đã nhận được cùng một mã nhận dạng được xác nhận quyền sở hữu mà DotNetOpenAuth đã cung cấp cho tài khoản đó, vì vậy có vẻ như mã tổng quát tốt. Tôi nghĩ rằng các bit thách thức duy nhất sẽ được tổng quát quá trình Attribute eXchange tùy thuộc vào những gì các nhà cung cấp sẽ cung cấp như DNOO không. –

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