【发布时间】:2017-04-25 05:03:12
【问题描述】:
我有一个 OWIN 自托管应用程序,它有一个用户可以注册的前端。 Nancyfx 负责路由和模型的逻辑,在documentation 中我看到 Nancyfx 带有 3 种类型的身份验证。
- 表单 (
Nancy.Authentication.Forms) - 基本 (
Nancy.Authentication.Basic) - 无状态 (
Nancy.Authentication.Stateless)
我已经选择了无状态身份验证,并按照this example 尝试设置一种基本的身份验证形式。
我想进一步扩展这一点,使用 JWT 提供一些方便的基本信息并作为基本身份验证的一种形式(例如,客户端有令牌,所以他已经过验证。),但这是我遇到一些问题的地方。
- 我验证
Home -> login -> redirect upon success的方式会导致我的 Response.Header.Authorization 被清除,不允许我在自定义引导程序中捕获令牌。
代码:
protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context)
{
AllowAccessToConsumingSite(pipelines);
StatelessAuthentication.Enable(pipelines, requestContainer.Resolve<IStatelessAuthConfigurationFactory>().Config());
}
//Returns ClaimsPrincipal or Null;
public StatelessAuthenticationConfiguration Config()
{
if(_stat == null)
{
_stat = new StatelessAuthenticationConfiguration(VerifyToken);
}
return _stat;
}
由于我的授权标头在每个请求中都会消失,因此我需要保留 JWT。我认为可以使用 OWIN 环境或 Nancy 上下文,但这是否可取 + 对于多用户环境的安全性会有什么影响。
OWIN 有它自己的身份验证管理器,我可以使用它,我已经对其进行了试验,但它倾向于在成功登录时提供一个 cookie,它似乎不会在注销时撤销它。我只是遇到了一些问题,所以我选择了 NancyFx 身份验证。 (我想这不是一个更笼统的评论)
提前感谢您的帮助!
【问题讨论】:
标签: c# authentication owin nancy