2012-09-06 17 views
6

Trong IIS, tôi có thể "bỏ qua", "cho phép" và "yêu cầu" chứng chỉ ứng dụng khách.ASP.NET WebApi - Làm cách nào để "cho phép", nhưng không phải "yêu cầu" chứng chỉ ứng dụng khách?

Trong ASP.NET WebAPI (phiên bản 4.0 vừa mới phát hành một chút trong khi quay lại), tôi dường như có khả năng chỉ "bỏ qua" hoặc "yêu cầu".

Theo mặc định, giấy chứng nhận của khách hàng sẽ được bỏ qua ... do đó, tuyên bố này luôn mang lại null:

var cert = actionContext.Request.GetClientCertificate(); 

Nhưng, nếu tôi đặt cờ này về cấu hình của tôi:

config.ClientCredentialType = HttpClientCredentialType.Certificate; 

Sau đó, tôi nhận được khách hàng cert ... nhưng, tôi không còn có khả năng cho phép truy cập ẩn danh nữa.

Ứng dụng khách ẩn danh của tôi hiện bị lỗi 403: "Máy chủ từ xa đã trả về lỗi: (403) Bị cấm".

Tôi có thể thực hiện một loại "cho phép" như trong IIS không?

+0

Bạn đã thử sử dụng mã mô hình nhận dạng được đề cập ở đây chưa? http: //leastprivilege.com/2012/08/20/support-for-x-509-client-certificates-in-thinktecture-identitymodel-for-web-api/... Có lẽ cách tiếp cận này kết hợp với việc sử dụng AllowAnonymous thuộc tính có thể giúp đỡ? http://www.davidhayden.me/blog/asp.net-mvc-4-allowanonymous-attribute-and-authorize-attribute có thể trợ giúp? –

Trả lời

2

Đây là giới hạn đã biết khi sử dụng chứng chỉ X509 trong tình huống tự lưu trữ. Giới hạn thực tế là từ ràng buộc vận chuyển cơ bản trong WCF, không có tùy chọn cho phép liên quan đến Chứng chỉ ứng dụng khách.

Bạn có thể, tuy nhiên, cho phép nhiều chương trình xác thực với các tùy chọn khác, chẳng hạn như ẩn danh và cửa sổ. Chúng tôi đang làm việc với nhóm WCF để tìm hiểu xem chúng tôi có thể thêm hỗ trợ đó bằng chứng chỉ ẩn danh và x509 không.

Hy vọng điều này sẽ làm rõ.

0

Có thể chứng chỉ được cung cấp không hợp lệ? Nếu trường hợp đó xảy ra, những điều sau có thể giúp bạn: RemoteCertificateValidationCallback

+0

Lỗi 403 không đến từ một chứng chỉ không hợp lệ ... nó xuất hiện nếu vô danh ... có nghĩa là, không có chứng chỉ nào cả. –

+0

Ah Tôi đã đọc sai phần đó. Nó có ném ngoại lệ vào mã không? Có ngoại lệ bên trong không? –

+0

Thật không may, không. Lỗi không có cert giống như với một cert không hợp lệ ... về cơ bản, có vẻ như nếu bạn yêu cầu một chứng chỉ, nó làm cho nó "bắt buộc". –