我试图围绕OAuth2和Perl(即Net :: OAuth2) - 特别是为数据库设置RESTful API,以及使用它的应用程序。
Perl Oauth2 package带我去了Net :: OAuth2。
尽可能接近,我需要做几件事(如果我在某处的杂草中,请纠正我):
在我的脑海中,这是它的工作原理:
这是对该过程的合理评估吗?
如果是这样,将“身份验证/授权”作为REST服务器的一部分或作为完全独立的服务器更有意义吗? (在相同的硬件上)。
Net::OAuth2::Profile::WebServer很好地解释了在客户端应用程序端发生的事情。
http://cpansearch.perl.org/src/MARKOV/Net-OAuth2-0.55/t/中的测试(除非我真的缺少某些东西)是关于使用Net :: OAuth2 webserver配置文件,它将(再次)成为“客户端应用程序”。
还有其他编写客户端的示例 - 连接到现有的OAuth2服务器,例如Google API的东西 - 但我找不到编写服务器的示例....(我非常愿意RTFM,如果我能找到 FM ...指针赞赏!)
答案 0 :(得分:4)
一般的想法是让中央auth服务器处理凭证+令牌生成+策略处理(policy =>是此应用程序授权的此应用程序)
首先让我们谈谈 OAuth服务器 i)服务器负责登录页面,用户可以在其中输入他的凭证 ii)验证凭证,如果正确,则此服务器然后检查哪个客户端应用程序进行了呼叫并验证“是此应用程序是否由此用户授权”。 - 这里有范围的概念 iii)为应用程序生成访问令牌/授权代码 iv)当客户端使用访问令牌命中API时,API应在内部将令牌传递给此服务器。这是服务器验证令牌内容的工作。
现在, API
i)API应接受来自客户端应用程序的令牌,将其传递给服务器 - 从服务器获取唯一的客户ID,并将数据返回给该客户的客户端。
对于第三方应用,
i)您需要进行注册过程。客户需要拥有客户端ID和秘密。 Google允许您在console注册
ii)应该有一个范围映射到每个唯一的API。例如,当您制作Google OAuth应用时,您需要为范围注册您的应用 - 范围为G +,Picasa,Google驱动器等。
iii)访问令牌对范围是唯一的,并映射到用户授予您的应用程序的权限。如果用户客户端应用程序仅选择G +范围,并且被用户授予访问权限,则应用程序只能将该令牌用于G +端点。
有关如何实施OAuth服务器的更详细答案,请访问:How would an efficient OAuth2.0 server / provider work?