gpt4 book ai didi

azure - 使用 Azure 移动应用程序对 Nancy 进行身份验证

转载 作者:行者123 更新时间:2023-12-01 22:35:20 26 4
gpt4 key购买 nike

我发现我可以将 Nancy 添加到我的 Azure 移动应用程序中。 http://www.strathweb.com/2014/02/running-owin-pipeline-new-net-azure-mobile-services/但如何添加 Nancy 的身份验证?这里的目标是能够使用同一服务器同时拥有网络应用程序和移动应用程序。

目标:如果Nancy页面需要身份验证,则跳转到~/.auth/login/aad(例如),然后返回原始页面。

我在哪里:

  1. 创建了新的 Azure 移动应用 ASP.NET 应用程序
  2. 添加了南希
  3. 删除默认的 MobileAppConfig 并替换为

        new MobileAppConfiguration()
    .MapApiControllers()
    .AddTables(
    new MobileAppTableConfiguration()
    .MapTableControllers()
    .AddEntityFramework()
    )
    .AddPushNotifications()
    .MapLegacyCrossDomainController()
    .ApplyTo(config);
  4. 创建一个 IndexModule 并确认 Nancy 可以正常工作

    public IndexModule()
    {
    Get["/"] = _ => "Hello";
    }
  5. 创建一个AdminModule,安装Nancy.Authentication.Forms后需要Authentication

    public AdminModule()
    : base("admin")
    {
    Get["/"] = _ =>
    {
    this.RequiresAuthentication();
    return "This is admin";
    };
    }
  6. 可能是错误的做法,但我已经这样做了

    protected override void ConfigureRequestContainer(TinyIoCContainer container, NancyContext context)
    {
    base.ConfigureRequestContainer(container, context);
    container.Register<IUserMapper, UserMapper>();
    }

    protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
    {
    base.RequestStartup(container, pipelines, context);

    var formsAuthConfig = new FormsAuthenticationConfiguration
    {
    RedirectUrl = "~/.auth/login/aad",
    UserMapper = container.Resolve<IUserMapper>(),
    };

    FormsAuthentication.Enable(pipelines, formsAuthConfig);
    }

这会将用户发送到正确的身份验证页面,但是当 zumo 返回时,它 (1) 返回带有 token 的回调,并且 (2) 提供指向主站点“网站”的链接,而不是 returnUrl, (3) 仍然不起作用。

更新。 看起来 Nancy.Forms.Authentication 是一个死胡同。我可以使用 Owin.Security 中的 UseCookieAuthentication 吗?

更新2。我摆脱了Nancy.Forms.Authentication。看起来当 Zumo 完成身份验证时,owin server.user 实际上已设置。

    protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
base.ApplicationStartup(container, pipelines);

Csrf.Enable(pipelines);
pipelines.BeforeRequest.AddItemToStartOfPipeline(FlowPrincipal);
}

private Response FlowPrincipal(NancyContext context)
{
var env = Get<IDictionary<string, object>>(context.Items, NancyMiddleware.RequestEnvironmentKey);
if (env != null)
{
var principal = Get<IPrincipal>(env, "server.User") as ClaimsPrincipal;
if (principal != null)
{
context.CurrentUser = new ClaimsPrincipalUserIdentity(principal);
}
}

return null;
}

将提供有效的可用用户。不过,如何触发登录和重定向是另一个问题。

Update3。我能够使用 Azure 中的设置强制登录

enter image description here

令人惊讶的是,这也可以处理重定向。不确定它如何影响 SignalR/Zumo 表,但希望它能够检查 header 而不是强制登录这些表。

最佳答案

您引用的博客文章适用于 Azure 移动服务,而不是 Azure 移动应用。

查看我的书的第 6 章 - http://aka.ms/zumobook 。它明确地向您展示了如何处理各种平台的应用程序服务身份验证。 Nancy 不是其中之一,但 MVC 版本应该可以帮助您。

关于azure - 使用 Azure 移动应用程序对 Nancy 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42590132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com