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

使用Spring Boot从client_credential授予类型访问受保护的资源

姜锋
2023-03-14

我正在尝试使用oauth client_credential grant类型来访问受保护的资源(我使用的是这个资源服务器:https://bitbucket.org/hascode/spring-oauth2-example),如果用户信息存在(隐式流),它可以正常工作。

根据我的理解,client_credentials没有用户信息,因此它在userinfoendpoint上失败,返回401

2016-07-11 15:19:37.335  INFO 9747 --- [nio-9001-exec-2] o.s.b.a.s.o.r.UserInfoTokenServices      : Getting user info from: http://rain.okta1.com:1802/oauth2/v1/userinfo
2016-07-11 15:19:37.421  INFO 9747 --- [nio-9001-exec-2] o.s.b.a.s.o.r.UserInfoTokenServices      : Could not fetch user details: class org.springframework.web.client.HttpClientErrorException, 401 Unauthorized

配置不多,这是全部资源

package com.hascode.tutorial;

import java.util.UUID;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Scope;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
@EnableResourceServer
public class SampleResourceApplication {
    public static void main(String[] args) {
        SpringApplication.run(SampleResourceApplication.class, args);
    }

    @RequestMapping("/")
    public String securedCall() {
        return "success (id: " + UUID.randomUUID().toString().toUpperCase() + ")";
    }
}

共有1个答案

钱京
2023-03-14

在oauth2上下文中,您有一个客户端和一个资源所有者。对于隐式授予类型,资源所有者是使用您的应用程序(客户端)的用户。您获得的访问令牌允许您检索用户拥有的资源。对于客户端凭据授予类型,资源所有者是客户端。因此您获得的访问令牌允许您获得客户端拥有的资源。

 类似资料:
  • 通过向资源服务器出示访问令牌,客户端访问受保护资源。资源服务器必须验证访问令牌,并确保它没有过期且其范围涵盖了请求的资源。资源服务器用于验证访问令牌的方法(以及任何错误响应)超出了本规范的范围,但一般包括资源服务器和授权服务器之间的互动或协调。 客户端使用访问令牌与资源服务器进行证认的方法依赖于授权服务器颁发的访问令牌的类型。通常,它涉及到使用具有所采用的访问令牌类型的规范定义的身份验证方案(如R

  • 我正在阅读这本Java SCJP的书,我偶然发现了以下内容: 但是我得到了这个错误: 那么,出什么问题了?

  • 从quarkus集装箱码头,我可以使用以下命令访问keycloak服务器 返回200状态;但无法访问受保护的资源。 我在这里做错了什么?

  • 客户端向资源服务器提供访问令牌以访问受保护资源。 资源服务器必须验证并验证访问令牌是否有效且未过期。 发送凭据有两种标准方式 - Bearer Token - 访问令牌只能作为授权HTTP头中的后备选项放在POST请求正文或GET URL参数中。 它们包含在授权标题中,如下所示 - Authorization: Bearer [token-value] 例如 - GET/resource/1 H

  • 问题内容: 我正在研究使用SQL LocalDB作为客户端数据库,它将替代.net 4中开发的内部应用程序中的当前SQL CE 3.5数据库。 我遇到了一个不确定的问题,那就是LocalDB实例的安全设置。 如果我在.net中设置了一个脚本来创建一个私有LocalDB实例,例如(localdb)\ T1,然后在该实例中创建了一个新数据库,并添加了一个SQL用户帐户+密码(非域帐户),如何停止本地使

  • 我在Laravel中创建了两个项目,一个是护照服务器,另一个是客户端。我在服务器项目中配置了完整的护照。我也得到了access_token。 当我授权我的客户端项目时,它会在我的浏览器中显示这个。 {“令牌类型”:“承载”、“到期日”:31536000,“访问令牌”:*******,“刷新令牌”:******} 现在,我的问题是如何为用户传递/授予访问令牌并转到我的客户端面板。我已经用邮递员检查过