我有API。其中一些仅限于通过OAuth从第三方应用程序访问。如何安全地从我的web应用程序访问我自己的API?
我也有一个web应用程序。用户可以登录并查看他们的私人信息。
该API也是从Web应用程序调用的。我的问题是用安全措施访问API的好方法是什么。
1. Third party applications -> OAuth
2. My own web application -> ???
我的Web应用程序使用会话ID进行身份验证。我想用HTTP标头传输会话标识可能是一种好方法,但我没有信心。
对于〔实施例...
$ curl -X PUT \
-H "X-Sample-Application-Id: "My own web application's ID" \
-H "X-Sample-Session-Token: yeoql2dvn7whpm4tbe61viscv" \
如果API接收到这个请求,使用会话进行身份验证,而不是OAuth的和识别用户....
任何帮助将不胜感激。
感谢,
..我发现类似的问题
Questions About Consuming Your Own API with OAuth
UPDATE1
有人说JWT(JSON网络令牌)是不错的。
https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
http://blog.mitsuruog.info/2014/08/jwtjson-web-tokenwebapicredential.html
UPDATE2
我可能能够使用OAuth的 “资源所有者密码凭据”
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/709.html
或者......“客户端克雷德补助金“看起来好多了。
我很抱歉我迟到的回应。你的建议很棒,我从来没有想过这么好的主意。最终我选择了密码授权类型,因为我必须实施我们自己的移动应用程序。 (我们将为第三方移动应用程序开发人员提供我们的API)而且,即使OAuth也非常复杂,但我可以找到一些库。这对我也有好处。使用基本身份验证可能需要自定义实现,不确定,但像创建表保存生成的密钥和秘密。 – zono
感谢您的解释,我有一些关于密码授权的问题。我已经构建了一个授权服务器,该服务器使用需要client_id和client_secret的基本认证来保护oauth /令牌,以便接受请求。但我怎样才能保护client_secret?客户端是一个Angular 2应用程序。有必要使用基本身份验证来保护oauth/token uri? – Paolo