我已经创建了最简单的spring oauth2应用程序。以下是我的全部代码:
第一个
我想通过Postman向我的Hello端点发送请求。
我已经填写了OAuth2标签中的所有必填字段并生成了我的令牌。我可以在Authorization头中看到我的令牌,但我对localhost:8080的请求仍然失败,并返回了GitHub登录页面。我做错了什么?
我还通过向Github auth URL和访问令牌URL发送直接请求来自己生成令牌,此令牌不适用于我的应用程序,但适用于Github API。
同样有趣的是,当我从浏览器发送请求时,它会提示我进入登录页面,我登录到Github,它会重定向我初始化页面,我在所有这些请求中看不到任何Authorization头。只有JSESSIONID cookie。
拜托,伙计们,我会很感激任何关于如何让它工作的想法。谢谢!
2条答案
按热度按时间afdcj2ne1#
@Gilles是对的,你写的是OAuth2
resource-server
,而不是client
。你几乎不能使用Github作为你的资源服务器的授权服务器:它会发出“不透明”令牌(不是JWT),您无法轻松地将其用于
spring-boot-starter-oauth2-resource-server
或类似对象(我不知道任何Github令牌的内省端点)。您可以选择使用自己的OIDC授权服务器(如Keycloak),它能够实现“用户身份联合”:它将代理Github(以及任何其他你喜欢的公共身份提供者:谷歌、Facebook等)。
一旦有了颁发JWT访问令牌的授权服务器,就可以查看这些教程来配置资源服务器:
mbyulnm02#
我会发布一个回应,因为我没有足够的声誉添加评论,但它更多的是一个提示比回应...
首先,当您查看浏览器和后端之间的交换时,您无法找到Authorization头。
我也没有,但是在我请求的cookie中,我有一个KEYCLOCK_IDENTITYcookie(正如您可能猜到的,我的idp是Keycloak)。
它应该持有所需的信息,以确保你是谁,你是谁(至少这是我的理解这个cookie的存在).
也许你有这样的东西,但与谷歌有关?
第二件事:看起来您希望将SpringBoot应用程序用作资源服务器,您可能应该查看一下这个page,并使用spring-boot-starter-oauth2-resource-server依赖项而不是spring-boot-starter-oauth2-client依赖项,以便使其与HTTP客户端(如Postman)一起工作。
希望能帮上忙。