【问题标题】:OAuth custom provider c#OAuth 自定义提供程序 c#
【发布时间】:2014-09-08 19:04:11
【问题描述】:

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

【问题讨论】:

  • 我不久前对此进行了研究,结果证明这是一个坏主意,因为需要注意无止境的安全问题,并且有无止境的更新让黑客领先。最后,大多数人选择了免费的 ThinkTecture 服务器。它背后的人是技术的重要领导者。 thinktecture.com/identityAndAccessControl
  • 您阅读过OAuth 1 或OAuth 2 的规范吗?
  • 我需要使用 OAUTH 2.0,按照我客户的要求来实现。
  • 基本上,我需要验证第三方用户的身份,如果除了 OAUTH 之外还有其他可用的,那么我也可以遵循。

标签: oauth-2.0


【解决方案1】:

正如 Roland 所说,如果您通过规范,它会非常简单。

在高层次上,这是支持 AuthCode 授权模式所需要做的事情:

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

  • 向每个第 3 方应用程序发布 clientid/secrets。
  • 在您的服务器上创建端点
    • 授权
    • 令牌

当客户端点击如下授权端点时:

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

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

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

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

/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"
 }

当第 3 方访问您的服务/资源时,根据客户端和用户 ID 验证令牌并授予或拒绝访问。

这是入门,但您可以使用范围和其他 OAuth2 模式进行更多自定义。

【讨论】:

  • 何时涉及客户端机密?
猜你喜欢
  • 2021-11-21
  • 2018-08-08
  • 2013-10-29
  • 1970-01-01
  • 2012-12-06
  • 2021-09-14
  • 2021-05-10
  • 1970-01-01
  • 2021-03-14
相关资源
最近更新 更多