OAuth自定义提供程序c#

问题描述:

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

+0

我研究了这个,但事实证明这是一个糟糕的主意,因为有无数的安全问题需要注意,并且无休止的更新要先于黑客。最后,大多数人选择了免费的ThinkTecture服务器。背后的人是技术领域的严肃领导者。 http://www.thinktecture.com/identityAndAccessControl – EvilDr 2014-09-04 09:56:53

+0

您是否阅读过[OAuth 1](http://tools.ietf.org/html/rfc5849)或[OAuth 2](http://tools.ietf)的规范.ORG/HTML/rfc6749)? – 2014-09-04 10:01:21

+0

我需要使用OAUTH 2.0,根据我的客户的要求来实现。 – daisy 2014-09-04 10:04:28

正如罗兰所说,如果你通过了规范,它很简单。

在较高的水平,这是你需要做的,以支持校验码拨款模式是什么:

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

  • 向每个第三方应用程序发出clientid/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

客户端会再上/令牌URI与AUTHCODE的东西叫象下面这样:

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

生成令牌,其存储对clientID的,用户名和用令牌回应。 类似下面

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

当第三方访问您的服务/资源验证对客户端的令牌和用户名和授予或拒绝访问。

这是要开始的,但您可以使用范围和其他OAuth2模式进行更多定制。