如何用我们的自定义身份验证替换 NancyFx 基本身份验证?
How to replace NancyFx Basic Authentication with our Custom Authentication?
我们被迫使用 NancyFX,1.4.4 或 2.0.0。我们正在使用 .NET Framework 4.7.2 和 Visual Studio 2019。该解决方案在 OWIN 中自托管并在 Windows Server 2012 R2 或 2016 上运行。
当前源代码使用 Nancy.Authentication.Basic.1.4.1,我们被迫将其替换为我们自己的自定义身份验证(例如,绕过浏览器 HTTP 401 处理)以检索自定义安全令牌在用户在我们的新自定义登录视图上输入他们的凭据或外部应用程序使用他们的凭据调用我们的 API 后,从外部系统。
我在互联网上阅读了关于 Nancy 和 OWIN JWT 中的无状态和令牌身份验证的各种帖子,还有这些 SO 帖子:
- Stateless authentication with NancyFx, OWIN and JWT
我也下载了样本,但似乎没有什么能正确或轻松地工作。
当前代码在 CustomBootstrapper 中有这个:
pipelines.EnableBasicAuthentication(new BasicAuthenticationConfiguration(
container.Resolve<IUserValidator>(),
"OurRealm"));
由于代码已经设置为使用 this.RequiresAuthentication() 和 ICurrentUser,并且我已成功注释掉上述代码并且 暂时 将 UserValidator 的代码合二为一我的模块的 Get(只是为了证明它有效),现在我需要删除我的临时调用并 替换引导程序代码以调用 UserValidator.
我正在考虑下载 Nancy 源代码并添加我们自己的 CustomAuthentication,但我觉得这不是最好或最简单的方法。有哪位 Nancy 大师可以回答这个问题吗?
我创建了一个继承自 NancyModule 的 BaseViewerModule,并将我的所有模块更改为继承基础。然后我添加了一个检查以查看用户的请求是否包含安全令牌,如果没有,则显示登录表单,调用我的身份验证服务器,将 UserIdentity 以安全令牌作为密钥存储在缓存中,并且 returns令牌返回请求的模块。
然后我在 pipelines.BeforeRequest 中添加了一个钩子来检查缓存中是否存在该项目,如果找到则将 CurrentUser 设置为它。
我们被迫使用 NancyFX,1.4.4 或 2.0.0。我们正在使用 .NET Framework 4.7.2 和 Visual Studio 2019。该解决方案在 OWIN 中自托管并在 Windows Server 2012 R2 或 2016 上运行。
当前源代码使用 Nancy.Authentication.Basic.1.4.1,我们被迫将其替换为我们自己的自定义身份验证(例如,绕过浏览器 HTTP 401 处理)以检索自定义安全令牌在用户在我们的新自定义登录视图上输入他们的凭据或外部应用程序使用他们的凭据调用我们的 API 后,从外部系统。
我在互联网上阅读了关于 Nancy 和 OWIN JWT 中的无状态和令牌身份验证的各种帖子,还有这些 SO 帖子:
- Stateless authentication with NancyFx, OWIN and JWT
我也下载了样本,但似乎没有什么能正确或轻松地工作。
当前代码在 CustomBootstrapper 中有这个:
pipelines.EnableBasicAuthentication(new BasicAuthenticationConfiguration(
container.Resolve<IUserValidator>(),
"OurRealm"));
由于代码已经设置为使用 this.RequiresAuthentication() 和 ICurrentUser,并且我已成功注释掉上述代码并且 暂时 将 UserValidator 的代码合二为一我的模块的 Get(只是为了证明它有效),现在我需要删除我的临时调用并 替换引导程序代码以调用 UserValidator.
我正在考虑下载 Nancy 源代码并添加我们自己的 CustomAuthentication,但我觉得这不是最好或最简单的方法。有哪位 Nancy 大师可以回答这个问题吗?
我创建了一个继承自 NancyModule 的 BaseViewerModule,并将我的所有模块更改为继承基础。然后我添加了一个检查以查看用户的请求是否包含安全令牌,如果没有,则显示登录表单,调用我的身份验证服务器,将 UserIdentity 以安全令牌作为密钥存储在缓存中,并且 returns令牌返回请求的模块。
然后我在 pipelines.BeforeRequest 中添加了一个钩子来检查缓存中是否存在该项目,如果找到则将 CurrentUser 设置为它。