OAuth自定义提供程序c#

dai*_*isy 7 oauth-2.0

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

小智 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
Run Code Online (Sandbox Code Playgroud)

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

{
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"example",
   "expires_in":3600,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
   "example_parameter":"example_value"
 }
Run Code Online (Sandbox Code Playgroud)

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

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