C# 使用NancyFx、OWIN和JWT进行无状态身份验证
我有一个OWIN自托管应用程序,它有一个用户可以注册的前端。Nancyfx负责路由和模型的逻辑,在本文中,我看到Nancyfx提供了3种类型的身份验证C# 使用NancyFx、OWIN和JWT进行无状态身份验证,c#,authentication,owin,nancy,C#,Authentication,Owin,Nancy,我有一个OWIN自托管应用程序,它有一个用户可以注册的前端。Nancyfx负责路由和模型的逻辑,在本文中,我看到Nancyfx提供了3种类型的身份验证 表单(Nancy.Authentication.Forms) 基本(Nancy.Authentication.Basic) 无状态(Nancy.Authentication.Stateless) 我已经确定了无状态身份验证,接下来我尝试设置一种基本的身份验证形式 我想在这方面做进一步的扩展,使用JWT可以方便地获得一些基本信息,并作为基本身份
- 表单(
)Nancy.Authentication.Forms
- 基本(
)Nancy.Authentication.Basic
- 无状态(
)Nancy.Authentication.Stateless
Home->login->redirect on success
导致Response.Header.Authorization被清除,不允许我在自定义引导程序中捕获令牌protectedoverride void RequestStartup(TinyIoCContainer requestContainer、IPipelines管道、NancyContext上下文)
{
允许进入铝土矿(管道);
无状态身份验证.Enable(管道,requestContainer.Resolve().Config());
}
//返回ClaimsPrincipal或Null;
公共无状态身份验证配置()
{
如果(_stat==null)
{
_stat=新的无状态身份验证配置(VerifyToken);
}
返回状态;
}
return Response.AsRedirect("/").WithHeader("Authorization", token);
实际上,客户机负责在身份验证后持有有效的JWT令牌。将其作为cookie返回(并在注销时删除)可以简化客户端实现,并避免令牌持久性问题
关于(2),不是真的,没有必要。JWT令牌是自包含的,这就是为什么它们在无状态身份验证场景中很有用
return Response.AsRedirect("/").WithHeader("Authorization", token);