我有一个具有Facebook登录功能的angular2应用程序。当用户验证自己时,我会将此accessToken发送到服务器。
服务器程序使用Springboot,我使用spring social。
facebook.getToken()返回客户端生成的访问令牌。当我调用facebook.isAuthorized()时,它返回true ...正如预期的那样,因为我正在发送真实数据。
虽然我发送的伪造数据如下:
(本例中的令牌由我制造)到同一个API端点 facebook.isAuthorized返回true。这是意料之外的,因为在这种情况下我正在制作一个accessToken。
春天 - 社会依赖是这样的:
为什么isAuthorize对于真实的访问令牌以及假的令牌都返回true?如何检查我的angular2应用程序的用户是否已通过服务器端的Facebook验证自己?
答案 0 :(得分:0)
可以在https://github.com/spring-projects/spring-social/blob/a6bf2626ee8ac81765c416029ca033affc94fc6c/spring-social-core/src/main/java/org/springframework/social/oauth2/AbstractOAuth2ApiBinding.java#L87找到isAuthorized()
for FacebookTemplate的实现。
使用此源非常明显isAuthorized()
仅检查是否提供了任何访问令牌。
要验证您的令牌,您可以运行任何需要授权的请求(例如userOperations().getUserPermissions()
)并检查InvalidAuthorizationException
,或者您可以在how to verify facebook access token?中找到一些灵感。