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

使用 OAuth2 在Spring安全中进行用户授权

许招
2023-03-14

我目前正在研究带有Spring安全和Spring启动的 OAuth2。虽然这个协议的概念对我来说很清楚,但实现细节不是(spring没有提供很多示例和教程)。因此,我将非常感谢回答以下问题:

>

  • “密码”授权类型的用途是什么?OAuth2规范没有提到它。它只是某种“授权快捷方式”的 Spring 实现吗?
  • 资源服务器如何处理访问令牌(检查它是否仍然有效、范围等)?我是否需要实现某些东西,或者它是由Spring Security和ResourceServerConfig提供的?
  • RS 如何知道哪个用户(不是客户端)请求了资源?具体的用户资源绑定了id、唯一的用户名等,token有这种信息吗?如何检索它以便在资源中使用的控制器?
  • 授权服务器(如果我错了,请纠正我)能够检查客户端应用程序是否有权请求的资源。据我了解,它不应该知道用户(资源所有者)。在我通过谷歌,Facebook或其他一些服务进行身份验证的情况下,用户身份验证是他们的情况。如果 OAuth2 和资源服务器是一个应用程序(我目前正在开发这样的应用程序用于测试目的),那么我应该将 UserDetailsService 放在哪里呢?以及如何组合它以授权客户端(在本例中从应用程序生成的 js)首先,然后是用户(资源所有者)并生成令牌?目前,我已经实现了ClientDetailService并注入到配置中。我应该在哪里注入UserDetailService?

    @Configuration
    @EnableAuthorizationServer
    public class OAuth2Config extends AuthorizationServerConfigurerAdapter {
    
    @Autowired
    private AuthenticationManager authenticationManager;
    @Autowired
    private MongoClientDetailsService cds;
    
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager);
    }
    
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.withClientDetails(cds);
    }
    }
    

    是否有一些JS库可以帮助自定义应用程序的授权流程,例如hello.js支持(据我所知)众所周知的服务?

    任何帮助将不胜感激:)

  • 共有1个答案

    徐卓
    2023-03-14

    这是很多问题;让我先回答3:

    >

  • 带有值 passwordgrant_type是资源所有者密码凭据授权类型的官方保留值,如此处的规范所示: https://www.rfc-editor.org/rfc/rfc6749#section-4.3.2,因此它不是特定于 Spring 或自定义的

    如果令牌是自包含和结构化的(例如 JWT),RS 可以验证令牌本身,否则它将需要对授权服务器进行回调以验证它

    步骤 2 的验证结果。可能包括有关授予客户端访问权限的用户(或:资源所有者)的信息

  •  类似资料:
    • 我正在尝试使用圣杯从推特上获取一些推文。twitter API现在需要通过OAuth2进行身份验证,我以前在其他框架和语言中已经使用一些插件/库非常轻松地完成了身份验证,但是我似乎无法在Grails中找到有效的实现。大多数谷歌搜索似乎都会出现与使用OAuth验证用户作为服务器相关的结果,因为我试图让Grails而不是充当客户端。 这个插件看起来很有希望,但是它的存储库似乎被破坏了,因为以下指向二进

    • 我试图在我的资源服务器上配置Swagger身份验证,以便我可以根据我的授权服务器进行身份验证。 我将资源服务器和授权服务器分开。它们都使用不同的端口在我的本地主机上启动。 端口8083上的资源服务器 每当我试图“授权”时,就会出现CORS问题。 我从另一个网站分叉了一个项目作为我的测试场地。下面是分叉项目。 https://github.com/cbriarnold/oauth2-spring-b

    • 我对授权和Spring Security有疑问。为了在我的一个服务中实现授权检查(在一个面向服务的架构环境下),我尝试看看是否可以使用Spring-Security。在浏览spring security文档时,我在这里读到Spring Security在内部使用Spring的AOP。 参考:您可以选择使用AsheJ或Spring AOP执行方法授权,也可以选择使用过滤器执行Web请求授权。您可以一

    • 如何在我的Spring boot应用程序中禁用oauth2安全过滤,或者跳过安全检查,我只想直接点击Spring boot@RestController中的GET和POSTendpoint,而不经过安全过滤。 我正在使用以下配置 Spring版本

    • 现在我使用下一个配置: 它需要发送。。。但是我需要为我的受信任服务器提供,这些服务器只有和。。。我怎样才能做到?可能吗?

    • 当我想要注销时,我调用以下代码: 怎么修?

    • 我正在尝试通过连接到LDAP使用Spring Security进行我的第一个演示。 我使用的Sping版本是:3.1.0.RELEASE 以下是我的security-integration.xml: 然而,每当我部署我的战争时,我都会遇到这个例外: HTTP状态500 - 类型异常报告 消息 描述服务器遇到一个内部错误(),该错误阻止它完成此请求。 例外情况 javax.servlet。Servl

    • 我使用spring-security-oauth2-authorization-server(版本0.2.0)来实现我的授权服务器。我希望用户角色在令牌中,是否可以添加它们?喜欢 谢谢