让我们说我们有用Angular 2编写的SPA,并使用Spring Boot创建REST API。 它们都部署在不同的服务器上。现在我必须通过Facebook的OAuth2保护这个API,但我不知道哪种授权类型适合我的问题。
我不想成为auth服务器,我不希望facebook成为我的资源服务器,而我自己的REST API应该是资源服务器。 从FB我只想要用户名或电子邮件或一些标识符。
如果我理解正确,我必须使用隐式授权流程,因为它不是网络应用程序,请纠正我,如果我错了。 是"授权代码"补助也可以是一种选择吗?
我真的读过与oauth,spring security相关的几乎所有线程。 但我没有找到任何与单独服务器的SPA和REST API相关的信息。
感谢与上述问题相关的任何链接/资源。
提前致谢,如果我做错了事,我很抱歉,这是我在这里的第一篇文章。
答案 0 :(得分:0)
您需要实现隐式授予流程https://oauth2.thephpleague.com/authorization-server/implicit-grant/
您需要HTTPS来确保安全。
示例:
将获取请求发送到带有参数的oauthserver“授权” URL
某些提供程序需要其他参数,例如“范围”。
如果一切正常,您发送请求时。您将使用url中的令牌将您重定向到您的客户端。
您的请求:
如果成功,您将被重定向到
您现在可以使用javascript检索令牌值并将其存储到localStorage,并在将请求发送到restapi(https://myrestapi.com)时将其附加
这是来自auth0.com的示例请求
$.ajax({
cache: false,
url: "http://localhost:7001/api/appointments",
headers: { "Authorization": "Bearer " + ATTACH_YOUR_TOKEN_VALUE_HERE }
});
有关更多详细信息,请检查此 https://auth0.com/docs/api-auth/tutorials/implicit-grant