2012-02-27 16 views
8

Có thể thiết lập URL giới hạn, loại xác nhận quyền sở hữu, v.v. đối với ACS xanh mà không cần chỉnh sửa web.config không? Bạn có thể thiết lập các yếu tố cần thiết theo cách lập trình này bằng cách nào đó không?Có thể nhận được khiếu nại ACS mà không cần chỉnh sửa web.config không?

EDIT: Cụ thể: Tôi muốn thoát khỏi điều này:

<federatedAuthentication> 
    <wsFederation passiveRedirectEnabled="true" issuer="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:81/" requireHttps="false" /> 
</federatedAuthentication> 

Về cơ bản, tôi không muốn các lĩnh vực được quy định trong cấu hình web, nhưng thay vì trong mã ở đâu đó. Tôi đã cố gắng overquiding ClaimsAuthenticationManager và bình luận ra các phần với mã liên quan đến FederatedAuthentication. Mã xác thực bị ghi đè của tôi bị truy cập nhưng không chứa bất kỳ xác nhận quyền sở hữu nào. Tôi giả định rằng điều này là do FederatedAuthentication là một trung gian thực hiện xác thực của riêng nó trước khi nó được gửi đến ClaimsAuthenticationManager được ghi đè bình thường. Có cách nào để ghi đè lên phần FederatedAuthentication một cách tương tự? Hoặc có thông tin được chuyển vào phương thức xác thực đã ghi đè mà tôi có thể sử dụng để thực hiện xác thực của riêng mình không?

Trả lời

9

Để loại bỏ dòng xml từ cấu hình web, tôi đã WSFederationAuthenticationModule riêng tôi trọng cái cũ, như vậy:

public class CustomWSFederationAuthenticationModule : WSFederationAuthenticationModule 
{ 
    protected override void InitializePropertiesFromConfiguration(string serviceName) 
    { 
     this.Realm = "http://localhost:81/"; 
     this.Issuer = "https://acsnamespace.accesscontrol.windows.net/v2/wsfederation"; 
     this.RequireHttps = false; 
     this.PassiveRedirectEnabled = true; 
    } 
} 

Và phần quan trọng của web.config:

<modules runAllManagedModulesForAllRequests="true"> 
    <add name="WSFederationAuthenticationModule" type="CustomModuleLocation.CustomWSFederationAuthenticationModule, CustomModuleLocation" preCondition="managedHandler"/> 
    <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> 
</modules> 

Phần liên kết được xác thực của XML bị xóa toàn bộ y.

+1

Làm việc như một sự quyến rũ trong thế giới của tôi. Cảm ơn bạn! –

1

Có, FedUtil thực hiện việc này. Đó là một tiện ích đi kèm với Windows Identity Foundation (WIF) SDK và bạn có thể gọi nó từ studio trực quan.

http://msdn.microsoft.com/en-us/library/ee517285.aspx

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=4451

EDIT: Tôi có thể đã hiểu lầm câu hỏi của bạn. FedUtil là một tiện ích cấu hình web.config của bạn cho bạn. Thay vào đó, nếu bạn muốn định cấu hình ứng dụng của mình bằng mã, điều đó cũng có thể. Các tài liệu WIF trên MSDN phải chứng minh làm thế nào để làm điều này:

http://msdn.microsoft.com/en-us/library/ee766446.aspx

+0

Điều thứ hai là nhiều hơn những gì tôi đang tìm kiếm. Tôi tìm thấy trang này trên trình xử lý mã thông báo tùy chỉnh: http://msdn.microsoft.com/en-us/library/ee517261.aspx rất hữu ích. –