Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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# 自定义oAuth服务器实现及其优势_C#_Oauth_Openid_Openid Provider - Fatal编程技术网

C# 自定义oAuth服务器实现及其优势

C# 自定义oAuth服务器实现及其优势,c#,oauth,openid,openid-provider,C#,Oauth,Openid,Openid Provider,我们有多个web项目(站点),每个项目都有自己的授权逻辑。今天,我的首席信息官要求我实现oAuth,并使用它在所有站点验证用户 早些时候,我曾将oAuth用于谷歌、Facebook、Twitter和微软。我这里有很多问题 实现oAuth提供者有什么好处 通用oAuth原则中的最佳方法是什么 我可以使用这个oAuth服务器进行单点登录吗 当我有来自谷歌或其他网站的用户oAuth时,我的想法是消除用户在我的网站上注册的努力,而不是使用他/她为谷歌提供的相同凭证这是我创建自定义oAuth的唯一优势吗?

我们有多个web项目(站点),每个项目都有自己的授权逻辑。今天,我的首席信息官要求我实现oAuth,并使用它在所有站点验证用户

早些时候,我曾将oAuth用于谷歌、Facebook、Twitter和微软。我这里有很多问题

  • 实现oAuth提供者有什么好处
  • 通用oAuth原则中的最佳方法是什么
  • 我可以使用这个oAuth服务器进行单点登录吗
  • 当我有来自谷歌或其他网站的用户oAuth时,我的想法是消除用户在我的网站上注册的努力,而不是使用他/她为谷歌提供的相同凭证这是我创建自定义oAuth的唯一优势吗?

    实现oAuth:

    • 使用ApplicationName、ClientID、ClientSecret创建应用程序实体
    • 使用UserId、用户名、密码和ApplicationID创建用户实体
    • 与每个站点共享唯一的ClientID和Secret,当用户尝试从该站点登录时,传递ClientID、ClientSecret、用户名、密码并验证并返回true或false
    • 按照用户注册到系统的类似流程进行操作
    在较高的层次上,我的上述流程是否满足oAuth概念?我是否可以参考oAuth的深入实现细节以更好地理解它?

    这是一本很好的读物,告诉您应该为OAuth使用什么,而不是:=)

    Windows身份基金会。。。可以帮助您跨不同的应用程序和层进行唯一授权

    最后,这里是一些如何操作指南:


    在多个客户端站点的情况下如何处理此问题。就像我的用户在D1.com上一样,当他尝试登录时,我将他的用户名、密码、客户端id发送到OAuth服务器,该服务器授予我在D1.com上的用户访问权限,但稍后当用户转到D2.com时,我可以避免用户输入用户名和密码吗?如果是,怎么做?你仍然需要以某种方式登录!对于高安全访问,不建议使用google/Fb,因为这些访问太容易受到攻击。如果只是太了解你是谁,那没关系。。无论如何,您仍然可以使用成员资格提供程序,或者在mvc中使用新的asp.net.blabla owin,它内置了对Oauth的支持(orization:=)。只要提供程序使用相同的存储,您就可以在每个站点上使用STS(取决于实现)重用它(取决于从站点切换)。。。身份验证总是在STS上完成的,它返回一个声明,您可以重新使用,如果STS觉得您获得了授权,那么您不需要再次登录,OpenID、OAuth协议的C#实现