2014-05-19 23 views
8

Đối với công ty của tôi, tôi phải thực hiện POC để kiểm tra xem chúng tôi có thể sử dụng xác thực wsFederation cho dự án của chúng tôi không, ứng dụng MVC, một số bộ điều khiển webapi và một số trung tâm signalR, tất cả trong các dự án differents. Chúng tôi cũng muốn sử dụng phần mềm trung gian xác thực OWIN trong cả ứng dụng khách và ứng dụng Nhà cung cấp danh tính.Xác thực với OWIN và WsFederation cho MVC, ứng dụng api và signalR

Tôi sử dụng Máy chủ nhận dạng Thinktecture v2 làm nhà cung cấp nhận dạng để bắt đầu (nhưng chúng tôi sẽ phải tự phát triển một số điểm). Đối với ứng dụng MVC, nó khá thẳng về phía trước và nó hoạt động tốt, sử dụng mã thông báo SAML2. Nhưng bây giờ mọi thứ trở nên phức tạp hơn một chút khi tôi muốn một người dùng được xác thực trên ứng dụng web có thể gọi một phương thức điều khiển từ ứng dụng api trên web (khác với MVC, hãy nhớ), sử dụng cuộc gọi ajax.

Tôi đã đọc rất nhiều điều về ủy nhiệm và thẻ ActionA, nhưng tôi hơi lạc đường và không bắt đầu từ đâu hoặc cách bắt đầu phần này. Ngoài ra, tôi không thể tìm thấy bất kỳ điều gì về ủy quyền sử dụng xác thực OWIN.

Câu hỏi đầu tiên của tôi là: có thể đạt được điều này không? Và sau đó: ai đó có thể chỉ cho tôi đi đúng hướng không?

Trả lời

1

Tôi đã làm theo hướng dẫn của Vittorio Bertocci khi tôi đang thực hiện.

http://www.cloudidentity.com/blog/2013/01/09/using-the-jwt-handler-for-implementing-poor-man-s-delegation-actas/

Một vài ghi chú về nó, nơi nó nói JWTSecurityTokenHandler, nó bây giờ là JwtSecurityTokenHandler. Nó là một lỗi đánh máy nhỏ, nhưng nó là một cách tốt để mất 15 phút nếu bạn không biết về nó.

Tôi cũng không thể sử dụng phần X509 FindByThumbprint. Tôi nghĩ rằng tôi đã không có giấy chứng nhận địa phương của tôi đăng ký đúng cách. Một khi tôi làm việc vào ngày mai, tôi sẽ đăng những gì tôi phải thay đổi để làm cho nó hoạt động.

Dominick Baier (http://leastprivilege.com/) cũng thực hiện một khóa học về đa phương thức được gọi là WebApi v2 Security, một công việc tuyệt vời nói về cách đưa vào đường dẫn bảo mật và thiết lập dự án api web để xử lý việc này.

Là một tùy chọn khác, bạn có thể thay thế lớp TokenValidationHandler mà Vittorio sử dụng với gói Microsoft.Owin.Security.Jwt và triển khai mã sau trong tệp Startup.cs.

app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { ConfigurationSettings.AppSettings["ida:Realm"] }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
        { 
         new SymmetricKeyIssuerSecurityTokenProvider(
          ConfigurationSettings.AppSettings["ida:ValidIssuer"], 
          ConfigurationSettings.AppSettings["ida:SymmetricKey"]) 
        }, 
       Provider = new OAuthBearerAuthenticationProvider 
       { 
        OnValidateIdentity = context => 
        { 
         var identity = context.Ticket.Identity; 
         return System.Threading.Tasks.Task.FromResult<object>(null); 
        } 
       } 
      }); 
Các vấn đề liên quan