tof*_*tim 6 azure azure-mobile-services
我看到我可以将Nancy添加到我的Azure移动应用程序中.http://www.strathweb.com/2014/02/running-owin-pipeline-new-net-azure-mobile-services/但是如何为南希添加身份验证?这里的目标是能够使用相同的服务器同时拥有Web应用程序和移动应用程序.
目标:如果Nancy页面需要身份验证,请跳转到〜/ .auth/login/aad(例如),然后返回到原始页面.
我在哪里:
删除默认的MobileAppConfig并替换为
new MobileAppConfiguration()
.MapApiControllers()
.AddTables(
new MobileAppTableConfiguration()
.MapTableControllers()
.AddEntityFramework()
)
.AddPushNotifications()
.MapLegacyCrossDomainController()
.ApplyTo(config);
Run Code Online (Sandbox Code Playgroud)创建一个IndexModule并确认Nancy是否正常工作
public IndexModule()
{
Get["/"] = _ => "Hello";
}
Run Code Online (Sandbox Code Playgroud)在安装Nancy.Authentication.Forms之后创建一个AdminModule,RequiresAuthentication
public AdminModule()
: base("admin")
{
Get["/"] = _ =>
{
this.RequiresAuthentication();
return "This is admin";
};
}
Run Code Online (Sandbox Code Playgroud)可能是错误的事情,但我有
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);
}
Run Code Online (Sandbox Code Playgroud)这会将用户发送到正确的auth页面,但是当zumo返回它时(1)返回带有令牌的回调,并且(2)提供指向作为主站点的"网站"的链接,而不是returnUrl和(3) )仍然没有真正起作用.
更新.看起来像Nancy.Forms.Authentication是一个deadend.我可以使用UseCookieAuthentication
Owin.Security吗?
UPDATE2.我摆脱了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;
}
Run Code Online (Sandbox Code Playgroud)
将提供有效的可用用户.如何触发登录和重定向是另一个问题.
UPDATE3.我能够使用Azure中的设置强制登录
令人惊讶的是,这也照顾了重定向.不确定它如何影响SignalR/Zumo表,但希望它能够检查标题而不强制登录这些表.
您引用的博客文章适用于 Azure 移动服务,而不是 Azure 移动应用。
查看我的书的第 6 章 - http://aka.ms/zumobook。它明确地向您展示了如何处理各种平台的应用程序服务身份验证。Nancy 不是其中之一,但 MVC 版本应该可以帮助您。
归档时间: |
|
查看次数: |
152 次 |
最近记录: |