我想为我的WCF4 REST API实现API密钥身份验证解决方案。
我知道我需要创建一个类并从ServiceAuthorizationManager派生它并覆盖CheckAccessCore方法。所有我理解的。
但我想从CheckAccessCore做的事情将CheckAccessCore的内部信息传递给我的Service实现类。我在进行ApiKey身份验证时查找的信息,如“ApiKeyID,权限,标志和其他详细信息”。
因此,我的服务在内部调用域逻辑时可以使用内部ApiKeyID。
我已经看到了许多不同的方法,比如
operationContext.ServiceSecurityContext.AuthorizationContext.Properties["Principal"] = p;
或
System.Threading.Thread.CurrentPrincipal = principal;
HttpContext.Current.User = principal;
和其他方式......
答案 0 :(得分:0)
您可以传递对象的另一种方法是将对象添加到RequestMessage对象的Properties Collection中。
IssuedToken Token = new IssuedToken()
operationContext.RequestContext.RequestMessage.Properties.Add("NameOfObj",Token);