Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义安全令牌服务-实现_C#_Asp.net Mvc_Claims Based Identity_Sts Securitytokenservice - Fatal编程技术网

C# 自定义安全令牌服务-实现

C# 自定义安全令牌服务-实现,c#,asp.net-mvc,claims-based-identity,sts-securitytokenservice,C#,Asp.net Mvc,Claims Based Identity,Sts Securitytokenservice,我正在做一个MVC4项目。实际上,该项目涉及3个模块,它们相互对话。用户可以购买3个模块中任何一个或全部模块的许可证。我需要为我们正在创建的网站实现单一登录。所以我们决定使用安全令牌服务,因为它会更安全 我读过关于STS的书,对它的工作原理有了基本的了解。但当我需要在实际项目中实现它时,问题就来了。老实说,我真的不知道如何实现它。有人能告诉我如何实现定制STS吗?(我正在开发.NETFramework4.5、MVC4和VisualStudio2012) 根据我的理解,我所需要的只是继承Claim

我正在做一个MVC4项目。实际上,该项目涉及3个模块,它们相互对话。用户可以购买3个模块中任何一个或全部模块的许可证。我需要为我们正在创建的网站实现单一登录。所以我们决定使用安全令牌服务,因为它会更安全

我读过关于STS的书,对它的工作原理有了基本的了解。但当我需要在实际项目中实现它时,问题就来了。老实说,我真的不知道如何实现它。有人能告诉我如何实现定制STS吗?(我正在开发.NETFramework4.5、MVC4和VisualStudio2012)

根据我的理解,我所需要的只是继承
ClaimsAuthenticationManager
并重写
身份验证
方法?(如果我错了,请纠正我)。如果是这种情况,我在哪里验证用户名和密码?我已经做了一些实现

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
。首先,如何对用户进行身份验证

我建议你看看

Thinktecture IdentityServer是一种轻量级的安全令牌服务,采用.NET 4.5、MVC 4、Web API和WCF构建


谢谢你的快速回答,佩波。事实上,我已经经历了ThinkStructure。问题是,当我需要为我的网站创建新用户时,我需要转到thinktecture。但我需要能够在自己的网站上创建用户。有可能吗?是的,有可能。IdentityServer有许多扩展点。您可以(通过实现一些接口)将其设置为与用户一起使用您自己的数据库。您可以找到有关扩展IdentityServer的更多信息。好的方面是,您不必实现所有的安全逻辑(STS),只需在用户管理和IdentityServer之间建立一些管道。