当前位置: 首页 > 知识库问答 >
问题:

在Spring Security OAUTH2中使用auth_code grant是否可以进行匿名

赵才俊
2023-03-14

我试图用SpringBoot 1.5.13和spring-security-oauth2 2.0.15实现一个OAuth2客户机。

我希望能够授权匿名用户与auth_code GRANT。然而,当我试图完成auth流时,我遇到了一些问题。因为我不想调用任何其他外部服务来获取用户标识信息,所以我使用DefaultTokenServicesDefaultTokenServices需要一个标记存储来进行操作,所以我提供了最简单的标记存储--InmemoryTokenStore

我尝试了两种方法,但都失败了:

如果我在授权后将用户重定向到OAuth2ClientAuthentationProcessingFilter筛选器上的URL,筛选器将正确地请求并获得访问令牌。然而,它试图做的下一件事是:

OAuth2Authentication result = tokenServices.loadAuthentication(accessToken.getValue());
if (auth instanceof AnonymousAuthenticationToken) {
    if (!resource.isClientOnly()) {
        throw new InsufficientAuthenticationException(
                "Authentication is required to obtain an access token (anonymous not allowed)");
    }
}

编辑:我尝试使用自己的AccesStokenProviderChain实现,它简单地省略了这个检查,以及与ClientTokenServices相关的部分,乍一看似乎可以工作。但我不确定这是否是一种正确的方法,足以用于多租户(多个匿名并发用户通过多个OAuth2提供程序进行授权)。

显然我的auth是匿名的auth,我需要一个匿名的auth流!我知道在Spring Security 5.2.x中这是完全可能的,但我不明白在Spring-Security-oauth2中如何做到这一点?

是否不能使用auth_code grant进行匿名授权?

共有1个答案

谷梁迪
2023-03-14

因此,匿名auth似乎不可能与OAuth2 auth_code grant一起使用,如以下开放错误:https://github.com/spring-projects/spring-security-oauth/issues/1842

我已经解决了这个问题,放弃了spring security oauth库,转而使用ScribeJava。

 类似资料:
  • 问题内容: 我不想使用jQuery,但我想使用Ajax进行文件上传。那可能吗? 如果是这样,我在哪里可以找到有关信息/教程? 问题答案: 不,无法使用javascript执行此操作。 但是,为了给人“ AJAX”的感觉,您可以向隐藏的iframe提交表单,然后将脚本结果输出到其中,然后从那里进行处理。Google 并从那里开始。 如果您使用的是jQuery,并且您的表单中包含任何文件字段,也可以使

  • 我有int的向量,我需要找到并用特定的值替换一些元素。他们都是一样的 例如:将所有元素的4替换为8。 我正在尝试c中循环中的直接内存访问。但对我来说还是很慢。 更新: 我正在上使用OpenCV对象: 函数仅在释放模式下通过指针返回值

  • 我使用OpenSSL创建了一个自签名证书,如下所示: 然后,我在C#.NET4.0中编写了以下代码: 使用一些文章和答案中的解决方案,我有类,我试图在其中实现和注册签名描述: 我已经验证了hash的长度为字节,它返回一个。但是如果我使用var(20字节长),尽管中指定的算法是,但它可以工作,并使用算法对哈希进行签名。 另外,如果我打印,它的值是http://www.w3.org/2000/09/x

  • 问题内容: 我发现自己一次又一次地重复相同的代码片段,是否有可能在AngularJS中执行类似的操作: 上面的输出将是: 我不一定要寻找确切的“ ng:include”解决方案或模式,而是会减少模板中重复次数的方法。 问题答案: 这应该是您想要的。 脚本和ng- include的 文档。

  • 本文向大家介绍浅谈Java中是否直接可以使用enum进行传输,包括了浅谈Java中是否直接可以使用enum进行传输的使用技巧和注意事项,需要的朋友参考一下 背景 我们在进行传输的时候 会有一些状态值,如Status为1代表删除,为0代表失败或者怎么样的。只传输一个)0或者1过去给第三方(此处不包括给前端),如果没有契约第三方会不认识你这个是什么意思,那我们在平时写业务逻辑的时候使用枚举很轻易就知道