上下文
我们的项目有一系列独立的http服务,我们一起工作
A,B和A的目的C对于这个讨论并不重要。除了他们互相交流。
身份验证服务是我们对Owin.Identity的实现。服务A首先上线,我们(很可能)没有正确实现安全集成。我们必须实现自己的MachineKeyProtector
来保护身份并设置请求上下文主体
var secureDataFormat = new TicketDataFormat(new MachineKeyProtector());
var ticket = secureDataFormat.Unprotect(accessToken);
request.GetRequestContext().Principal = new ClaimsPrincipal(ticket.Identity);
这似乎不正确。我想
//startup.cs
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
//web.config
//all our services share the same machine key
<machineKey decryptionKey="..." validationKey="..." validation="SHA1" decryption="AES" />
照顾安全。
然后出现了自动化测试的问题。我们使用Owin.Testing
来模拟HTTP调用并运行集成测试。为了实现这一点,我们需要创建一个JWT,我们目前正在使用此代码
var ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
var protected = new MachineKeyProtector().Protect(ticket);
new TicketDataFormat(protected);
再次使用我们的MachineKeyProtector
实施。所有这一切都有效,但似乎并不正确。我会通过Owin.Security.OAuth
(或JWT?)为我们处理这个问题。
我们创建MachineKeyProtector
作为为自动化测试生成JWT令牌的方法。
问题/问题
MachineKeyProtector
的情况下生成JWT。我假设我们可以使用JwtTokenizer.Create(new Claims Identity());
调用来生成身份验证令牌,但我无法找到它。 我尝试尽可能简化上下文,同时深入了解我们目前的情况。如果需要更多信息,请询问。