WIF身份委派给WebAPI REST服务
我读过这篇文章: 使用AD FS 2.0的身份委派分步指南 ,介绍如何使用WIF从ASP.NET应用程序到后端WCF服务执行身份委派。 我目前有一个ASP.NET WebAPI REST服务,我希望能够使用身份委派从我的ASP.NET应用程序调用,但我找不到任何有关如何实现此目的的信息。 上面提到的technet文章使用CreateChannelActingAs
使用调用用户的安全令牌创建到WCF服务的通道,但显然这种方法不适用于REST API。 任何人都可以指向我任何文章或提供如何使用WIF将身份委托给我的REST服务的描述吗?
我的WebAPI REST服务应用程序已经在Thinktecture的这个库的帮助下使用WIF身份validation进行设置和工作。
我找到了解决方案(我正在使用Thinktecture Identity Server)。 我必须设置一个我的Web应用程序使用的委托帐户( webappaccount
),通过身份服务器中的Identity Delegation-> Add Realm委托我的服务所在的领域 ,并且在我的Web应用程序中,我必须进行服务调用我的STS提供引导令牌以接收新的安全令牌,然后我可以使用该令牌对我的服务进行身份validation。
在我设置的Web应用程序配置中:
在我的网络应用程序中,访问我的服务的代码如下所示:
BootstrapContext context = ClaimsPrincipal.Current.Identities.First().BootstrapContext as BootstrapContext; var factory = new WSTrustChannelFactory( new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), _trustUrl); factory.TrustVersion = TrustVersion.WSTrust13; factory.Credentials.UserName.UserName = "webappaccount"; factory.Credentials.UserName.Password = "P@ssword"; var rst = new RequestSecurityToken { RequestType = RequestTypes.Issue, KeyType = KeyTypes.Bearer, AppliesTo = new EndpointReference(_realm), ActAs = new SecurityTokenElement(context.SecurityToken) }; var token = factory.CreateChannel().Issue(rst) as GenericXmlSecurityToken; var client = new HttpClient { BaseAddress = _baseAddress }; client.SetToken("SAML", token.TokenXml.OuterXml); var response = client.GetAsync("api/values").Result;
我的REST服务不需要任何更改。
- 使用.NET Core的Firebase身份validation(JWT)
- 如何替换Web API模型绑定的行为,以便在没有传入参数时,我将收到一个新实例,而不是Null
- SignalR hub中的简单Injector per-web-api-request依赖
- 使用WebApi进行OData分页($ inlinecount)
- Azure webrole循环和“无法加载文件或程序集System.Web.Http 5.2.0.0”
- 发布和重定向FROM Web Api
- 在Asp.net Web API中处理CORS预检
- 尝试使用HttpClient上传文件时,Web Api的RequestEntityTooLarge响应
- Web Api控制器无法识别Json方法