客戶端代理下面是我迄今所做的:編程方式創建一個WIF保護的WCF服務
1)創建了一個ASP.NET MVC依賴方申請,並ADFS V2.0獲取它。這工作。
2)使用ASP.NET網站的Claims-Aware服務模板創建WCF服務。我已將服務的ASP.NET兼容性轉爲開啓狀態,因爲服務不會以其他方式激活。我已將所述服務的界面移至「SharedContracts」程序集。
3)使用「添加STS」引用,也指向我的ADFS服務器,將WCF服務設置爲依賴方。
4)將ADFS服務器配置爲包含WCF服務作爲依賴方併發出LDAP聲明。
我現在想要做的是與使用ActAs的服務交談。換句話說,當有人從ASP.NET MVC站點用滿有聲明的令牌(記住MVC站點是一個依賴方)擊中HomeController.Index()時,我希望此方法以編程方式創建一個客戶端代理並調用單個我使用WCF服務(一種名爲「HelloClaim」的方法,它與聲明感知服務模板附帶的庫存方法幾乎相同)的服務方法。
這裏是到目前爲止,我已經得到了代碼:
[ValidateInput(false)]
public ActionResult Index()
{
SecurityToken callerToken = null;
IClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as IClaimsPrincipal;
if (claimsPrincipal != null)
{
foreach (IClaimsIdentity claimsIdentity in claimsPrincipal.Identities)
{
if (claimsIdentity.BootstrapToken is SamlSecurityToken)
{
callerToken = claimsIdentity.BootstrapToken;
break;
}
}
string baseAddress = "http://khoffman2/SecureServices/Service.svc";
ChannelFactory<IHelloClaim> factory = new ChannelFactory<IHelloClaim>(new WebHttpBinding(), new EndpointAddress(baseAddress));
factory.ConfigureChannelFactory<IHelloClaim>();
IHelloClaim hello = factory.CreateChannelActingAs<IHelloClaim>(callerToken);
string result = hello.HelloClaim();
ViewData["Message"] = "Welcome to ASP.NET MVC!";
}
return View();
}
當我嘗試調用的方法,我收到以下錯誤信息:
手冊尋址是這家工廠啓用,因此所有發送的消息必須預先編址。
我很確定我只是沒有足夠的配置綁定和端點編程。如果你們之前有過這樣做,或者你知道如何去做,我希望能夠實現這一目標。
底線是我只是使用基本的身份委託方案 - 唯一的區別是我沒有使用生成的客戶端代理。