我想为我的 WCF4 REST API 实施 API 密钥身份验证解决方案。
我知道我需要创建一个类并从 ServiceAuthorizationManager 派生它并覆盖 CheckAccessCore 方法。我所理解的一切。
但是我想从 CheckAccessCore 做的是将内部信息从 CheckAccessCore 传递给我的服务实现类。我在进行 ApiKey 身份验证时查找的“ApiKeyID、权限、标志和其他详细信息”等信息。
这样我的服务在调用域逻辑时可以在内部使用内部 ApiKeyID。
我见过很多不同的方法,比如
operationContext.ServiceSecurityContext.AuthorizationContext.Properties["Principal"] = p;
或者
System.Threading.Thread.CurrentPrincipal = principal;
HttpContext.Current.User = principal;
和其他方式......