我正在开发一个MVC 4项目。实际上,该项目涉及3个模块,它们相互通信。用户可以购买3个模块或全部模块中的任何模块的许可证。我需要为我们正在创建的网站实施单点登录。所以我们决定使用安全令牌服务,因为它会更安全。
我读过STS,我对它的工作原理有基本的了解。但问题来自于我需要在实际项目中实现它。老实说,我真的不知道如何实现它。谁能告诉我如何实现自定义STS? (我正在研究.NET framework 4.5,MVC 4和Visual Studio 2012)。
根据我的理解,我需要的是继承ClaimsAuthenticationManager
并覆盖Authenticate
方法? (如我错了请纠正我)。如果是这样的情况我在哪里验证用户名&密码?我已经做了一点实现
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
if (!incomingPrincipal.Identity.IsAuthenticated)
{
return base.Authenticate(resourceName, incomingPrincipal);
}
return DressUpPrincipal(incomingPrincipal.Identity.Name);
}
上述代码incomingPrincipal.Identity.IsAuthenticated
中的始终为false
。我如何首先验证用户?
答案 0 :(得分:1)
我建议你看一下IdentityServer。
Thinktecture IdentityServer是一个使用.NET 4.5,MVC 4,Web API和WCF构建的轻量级安全令牌服务。