【问题标题】:mock federated security in asp.net mvc app在 asp.net mvc 应用程序中模拟联合安全性
【发布时间】:2013-11-27 12:23:53
【问题描述】:

我们正在尝试在我们的一个 asp.net mvc 4 中模拟基于联合安全性的身份验证 应用。

实际上这个web应用最终会使用联邦安全认证,但是这个认证服务还远远没有准备好,需要一段时间才能测试,但是我们需要尽快给出一个web app的demo。 所以我想我可以尝试模仿/模拟基于联合安全性的身份验证,例如当我们在 asp.net 中进行自定义成员资格/身份验证时,使用自定义主体来设置 httpcontext.current.user 对象。为联合安全寻找类似的东西。

任何方向都会很棒,有文章链接吗?只是想获得一个我可以依赖的基础,并开始自己在我的应用中模拟/模拟身份验证。

我已经尝试了很多,但我尝试的所有内容都在谈论模仿/自定义其他身份验证模式,例如表单/Windows 等,但对于与 asp.net mvc 联合,我没有得到任何相关信息,因此如果有的话,我不得不寻求指导.希望这不是一个糟糕的问题,但手指交叉... :-)

编辑: 基本上我想知道如何编写自定义声明主体(IClaimsPrincipal 接口的自定义实现)来模拟基于声明的身份验证,我可以在我的 mvc 应用程序中访问从中获得的声明数据,这在我获得真正的声明身份验证之前是必需的到位了,有什么建议吗?

谢谢...

【问题讨论】:

  • 取决于你想模拟什么;如果您只想模拟“经过身份验证的用户”,您可以在验证请求事件时将用户强制设置为 Global.asax 中的 http 上下文。如果要模拟整个身份验证过程;你需要一些演示身份提供者。我在一个项目中就这样做了——因为我们的合作伙伴公司提供“真实”身份提供者端点的速度很慢,这是我自己编写的。
  • 请求对问题投反对票的用户,至少发表评论来证明这一点,因为我不清楚为什么这样做?
  • @Ondrej Svejdar:是的,我现在只想模拟经过身份验证的用户,但是对于用户而言,isautheticated 设置为 true 后,不确定这是如何完成的,有什么想法吗?硬编码/设置 httpcontext.current.user 在表单和联合身份验证之间有什么不同吗?

标签: c# security asp.net-mvc-4 authentication federated-identity


【解决方案1】:

更新:(到虚拟的 ClaimIdentity);假设您将使用 WIF(程序集 Microsoft.IdentityModel 和 System.IdentityModel)

在您的 Global.asax.cs 中放置:

private class DummyIdentity : IIdentity {
  public string AuthenticationType {
    get { return "Dummy"; }
  }

  public bool IsAuthenticated {
    get { return true; }
  }

  public string Name {
    get { return "DummyUser";  }
  }
}    

void Application_AuthenticateRequest(object sender, EventArgs e) {
  var collection = new ClaimsIdentityCollection();
  var identity = new ClaimsIdentity(new DummyIdentity());
  identity.Claims.Add(new Claim("EnterpriseID", "Whatever"));
  collection.Add(identity);
  var principal = new ClaimsPrincipal(collection);
  Context.User = principal;
}

这也将硬编码 WIF 使用的 ClaimsPrincipal 对请求的身份验证。

【讨论】:

  • 感谢您的回答和努力,我真的希望它可以是我目前需要的,但它确实适合其他身份验证模式。已经通过这种方法,但它不会满足需求,因为我需要模仿基于联合/声明的身份验证,我必须从获得的声明数据(如企业 ID 等)中取出一些参数/值,这些参数/值仅来自声明主体,如果我不会出现不要创建自定义声明主体。这就是我想了解如何编写自定义声明主体的内容,请对此提出任何建议
猜你喜欢
  • 1970-01-01
  • 2011-12-24
  • 2015-12-17
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多