OAuth自定义提供程序c#

时间:2014-09-04 09:52:23

标签: oauth-2.0

我需要创建一个自己的OAUTH Provider,以验证第三方应用程序请求,我不想使用Google,Twitter,LinkedIn,Microsoft提供商。我必须创建自己的提供程序来验证请求并将访问令牌返回给客户端。但网上的所有帮助都与外部提供商有关(谷歌,LinkedIn,Twitter,Facebook ......)。任何人都可以帮助我创建自己的自定义提供程序吗?

1 个答案:

答案 0 :(得分:7)

正如罗兰所说,如果你完成规范,它就会非常直接。

在高级别,您需要做的是支持AuthCode授权模式:

假设: 您的应用程序拥有用户。

  • 向每个第三方应用程序发出clienti / secrets。
  • 在您的服务器上为其创建端点
    • 授权
    • 令牌

当客户端点击授权终点时,如下所示:

/authorize?response_type=code&client_id=<clientID>&state=xyz&redirect_uri=http://thirdparty.com

  • 将客户端重定向到登录页面。
  • 验证用户提供的用户名/密码。
  • 如果成功,请使用authCode调用第三方客户端重定向URI。
  • 如果失败,请调用第三方客户端重定向URI并显示错误(预先发布)。

这里有回调示例 https://thirdparty.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz

然后,客户端将使用authcode调用/ token URI,如下所示:

/token?grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=http://thirdparty.com

生成令牌,将其存储在clientID,UserId并使用令牌回复。 像下面的东西

{
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"example",
   "expires_in":3600,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
   "example_parameter":"example_value"
 }

当第三方访问您的服务/资源时,针对客户端和用户ID验证令牌并授予或拒绝访问权限。

这是开始使用但可以使用范围和其他OAuth2模式进行更多自定义。