Spring Security OAuth2简单配置

2024-05-20

我有一个简单的项目,需要以下简单的配置:

  • 我有一个“密码”grant_type,这意味着我可以提交用户名/密码(用户在登录表单中输入),并在成功时获得 access_token。
  • 有了该 access_token,我就可以请求 API 并获取用户的信息。

我知道 API 的 URI,我不需要任何巨大的东西(我看到了配置https://github.com/spring-projects/spring-security-oauth/tree/master/samples https://github.com/spring-projects/spring-security-oauth/tree/master/samples)而且看起来很大。

我可以这样想:

  • 执行一个简单的 HTTP 请求,给出 *client_id* 、 *client_secret* 、 *grant_type=password* 、username and password(用户提供的)。
  • 我在 JSON 响应中收到 *ACCESS_TOKEN* (和一些其他内容)。
  • 我使用 *ACCESS_TOKEN* 查询 URL(使用简单的 GET 请求),这将提供用户的信息。
  • 我在 HttpSession 中设置信息并认为用户已登录。

它可以在 2 个 HTTP 请求中完成。我只是不想这样做,而是使用“更安全”的方式来代替 Spring Security OAuth2。

你能想到我需要进行什么“简单”配置才能完成此任务吗?


不要让 Sparklr 示例让您感到困惑(它的作用比您看起来需要的要多得多)。是this https://github.com/scratches/sparklr-boot/blob/master/src/main/java/demo/Application.java对你来说足够简单吗?

@ComponentScan
@EnableAutoConfiguration
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

@Configuration
@Order(Ordered.LOWEST_PRECEDENCE - 100)
protected static class OAuth2Config extends OAuth2AuthorizationServerConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // @formatter:off
        auth.apply(new InMemoryClientDetailsServiceConfigurer())
            .withClient("my-trusted-client")
                .authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit")
                .authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT")
                .scopes("read", "write", "trust")
                .accessTokenValiditySeconds(60)
        .and()
            .withClient("my-client-with-secret")
                .authorizedGrantTypes("client_credentials")
                .authorities("ROLE_CLIENT")
                .scopes("read")
                .secret("secret");
    // @formatter:on
    }

}

}

那是身份验证服务器。客户端也很简单(例如Spring OAuth 项目中的一个 https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/tonr/src/main/java/org/springframework/security/oauth/examples/config/SecurityConfig.java)。附:这都是 Spring OAuth 2.0 的内容(尚未发布),但我们正在研究它(带有 XML 配置的 1.0 功能实际上并没有那么重)。

注意:这种方式违背了 OAuth2 的目标(webapp 客户端是not应该收集用户凭据)。你应该考虑使用grant_type=authorization_code.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Security OAuth2简单配置 的相关文章

随机推荐

  • PC 键盘在 Android 模拟器中无法使用 [重复]

    这个问题在这里已经有答案了 尽管我在创建 AVD 时选择了 启用键盘输入 但我无法使用 PC 键盘将字符输入到 AVD 模拟器上运行的应用程序中 有人可以帮忙吗 下面是我的config ini Note 可以从 AVD Manager 访问
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • Flutter 中的自动关闭对话框

    我想在打开后几秒钟自动关闭对话框 我找到的解决方案是调用Navigator of context pop 延迟并且有效 但如果我在执行 Navigator pop 命令之前手动关闭它 通过单击外部 就会出现问题 然后 Navigator p
  • vim 中的正则表达式查找和替换:向数字添加 .0

    我有一个如下所示的文件 1 1 0 1 6 1 0 2 8 1 0 3 10 1 0 4 12 1 0 6 如何为所有数字添加 0 后面的数字除外 我认为用正则表达式来做到这一点应该不会太难 但是我的正则表达式知识太生疏了 使用 VIM s
  • Angular 4 与 Webpack 2,动态加载脚本

    我刚刚在一个项目中尝试使用 Angular 4 和 Webpack 2 我试图在 ngOnInit 期间加载一些脚本 但遇到了一些问题 问题1 我的 ngOnInit 中有以下代码 System import node modules jq
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 有没有一种简单的方法来准备 Fortran 代码以进行并行调用

    我想使用 OpenMP 在 C 程序中并行求解多个大型 ODE 系统 由于某些原因 我需要使用 ODE 求解器 但我只能找到 Fortran 90 子例程 而且代码太大 无法简单地将其转换为 C 我知道 Fortran 广泛使用静态内存 因
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用

    我正在尝试将我的项目从 UseMVC asp net core 2 2 兼容样式 升级到 UseEndpoint Routing 并且我的所有请求都被重定向到我的验证失败页面 它与声明有关 如果我删除 Authorize Roles Adm
  • Featuretools 从多列创建索引

    我正在尝试使用以下方法从数据帧创建一个实体entity from dataframe功能工具中的功能 如果索引包含多个列 是否有一种方法来定义索引 我不确定是否需要列表 元组或其他数据结构 这是代码 es es entity from da
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户