小编phi*_*sch的帖子

使用 Spring Boot 2 和 Spring Security 5 进行多因素身份验证

我想使用 TOTP 软令牌将多因素身份验证添加到 Angular 和 Spring 应用程序,同时使所有内容尽可能接近Spring Boot Security Starter的默认值。

令牌验证发生在本地(使用 aerogear-otp-java 库),没有第三方 API 提供者。

为用户设置令牌有效,但通过利用 Spring Security Authentication Manager/Providers 验证它们无效。

TL; 博士

  • 将额外的 AuthenticationProvider 集成到Spring Boot Security Starter配置的系统中的官方方法是什么?
  • 什么是防止重放攻击的推荐方法?

长版

API 有一个端点/auth/token,前端可以通过提供用户名和密码从中获取 JWT 令牌。响应还包括身份验证状态,可以是AUTHENTICATEDPRE_AUTHENTICATED_MFA_REQUIRED

如果用户需要 MFA,则颁发令牌的单个授予权限PRE_AUTHENTICATED_MFA_REQUIRED为 5 分钟,到期时间为 5 分钟。这允许用户访问端点/auth/mfa-token,在那里他们可以从他们的 Authenticator 应用程序提供 TOTP 代码,并获得完全验证的令牌以访问站点。

提供者和令牌

我已经创建了我的自定义MfaAuthenticationProvider实现AuthenticationProvider

    @Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        // validate the OTP code
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

authentication spring-security spring-boot totp multi-factor-authentication

13
推荐指数
1
解决办法
4650
查看次数

maven-replacer-plugin和多个文件

我编写了一个Java Web应用程序,我在构建时将URL替换为静态内容,以添加版本信息,主要用于缓存.

例如,href="myapp/css/default.min.css"变成了href="myapp-0.2.8/css/default.min.css"

我正在使用maven maven-replacer-plugin,对于一个文件,工作正常:

工作实例

使用file-Tag进行单个文件替换.

    <plugin>
      <groupId>com.google.code.maven-replacer-plugin</groupId>
      <artifactId>replacer</artifactId>
      <version>1.5.2</version>
      <executions>
        <execution>
          <phase>prepare-package</phase>
          <goals>
            <goal>replace</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
       <ignoreMissingFile>false</ignoreMissingFile>
       <file>${project.build.directory}/myApp/index.jsp</file>
        <replacements>
          <replacement>
            <token>%PROJECT_VERSION%</token>
            <value>${project.version}</value>
          </replacement>
        </replacements>
      </configuration>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

Maven Debug Output在工作示例中显示了这一点.

    [DEBUG] Configuring mojo 'com.google.code.maven-replacer-plugin:replacer:1.5.2:replace' with basic configurator -->
    [DEBUG]   (s) basedir = .
    [DEBUG]   (s) commentsEnabled = true
    [DEBUG]   (s) encoding = UTF-8
    [DEBUG]   (s) file = /Users/phisch/Development/MyApp/Workspace/MyApp-WebApp/target/myApp/index.jsp
    [DEBUG]   (s) ignoreErrors = false
    [DEBUG]   (s) ignoreMissingFile = false
    [DEBUG]   (s) preserveDir = true
    [DEBUG] …
Run Code Online (Sandbox Code Playgroud)

maven maven-replacer-plugin

10
推荐指数
4
解决办法
3万
查看次数

集成测试 WebAuthN 作为 2FA 选项

我想将 WebAuthN 添加为 Angular & Spring 应用程序的多因素身份验证选项。我使用 Yubico 的 WebAuthN java-webauthn-server库。

在没有硬件客户端的情况下,集成测试我的 WebAuthN 服务器的最佳方法是什么?是否有任何软件可以在自动化测试中处理密码学?我想在 CI/CD 管道 (GitLab) 中自动运行这些测试。

在最好的情况下,我希望能够测试整个过程,创建凭据以及登录。另一种情况可能是我在后端使用已知凭据并仅使用这些凭据登录。

我的 API 是基于 REST/JSON 的,具有依赖方、用户、挑战、公钥等......

我的集成测试是基于 Java 的(spring boot starter test)

我主要对如何在没有客户端的情况下集成测试服务器感兴趣。是否有可以处理身份验证器并返回正确数据/json 对象的实用程序或库?

我已经查看了通过 REST 工具测试 WebAuthn,但是,我对测试规范不感兴趣,因为我使用的是库,我只想确保我将库正确应用于我的代码。

java integration-testing spring-boot webauthn multi-factor-authentication

9
推荐指数
1
解决办法
400
查看次数

像Spring MVC Web应用程序的视图一样的Rails

我正在计划一个Web应用程序,我目前正在评估框架.我以前在Ruby on Rails上做了很多工作,但是由于这个应用程序将依赖于已经用Java编写的许多代码并且将在Application Server基础结构上运行,因此它也将使用Java.

到目前为止,我看了几个框架,而Spring MVC(3.0)看起来最符合我的计划.我喜欢与Rails相比有多少概念相似:前端控制器,推送视图和宁静的URL.

但是,我仍然不确定视图部分.我希望能够拥有一个(或多个)具有我的网站基本结构的应用程序模板,包括徽标,页脚等.此模板将具有一些动态区域,例如导航部分等.(在Rails speek中,yield :导航)一些视图代码,特别是表单将被重用; 这就是为什么像偏爱的东西也会很好.

我的首页可能如下所示:

+-------------------------------+
| Application.tmlp              |
|                               |
|  +-------------------------+  |
|  | index.tmpl              |  |
|  |                         |  |
|  |  +-------------------+  |  |
|  |  |                   |  |  |
|  |  | login_partial.tmpl|  |  |
|  |  |                   |  |  |
|  |  +-------------------+  |  |
|  |                         |  |
|  +-------------------------+  |
|                               |
+-------------------------------+
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现了Velocity,Freemarker和Tiles,但我仍然不确定哪一个最适合我的需要.我喜欢模板概念,因为我想要一些设计师来创建模板.

一些既好但又不如模板概念那么重要的东西,就像rails中的link_to helper一样自动创建链接:

link_to "Profile", :controller => "profiles", :action => "show", :id => …
Run Code Online (Sandbox Code Playgroud)

java web-applications spring-mvc

6
推荐指数
1
解决办法
1559
查看次数

使用Hadoop/MapReduce查找匹配的行

我正在玩Hadoop并在Ubuntu上设置了一个双节点集群.WordCount示例运行得很好.

现在我想编写自己的MapReduce程序来分析一些日志数据(主要原因:它看起来很简单,而且我有足够的数据)

日志中的每一行都有这种格式

<UUID> <Event> <Timestamp>
Run Code Online (Sandbox Code Playgroud)

事件可以是INIT,START,STOP,ERROR等.我最感兴趣的是同一个UUID的START和STOP事件之间经过的时间.

例如,我的日志包含这些条目

35FAA840-1299-11DF-8A39-0800200C9A66 START 1265403584
[...many other lines...]
35FAA840-1299-11DF-8A39-0800200C9A66 STOP 1265403777
Run Code Online (Sandbox Code Playgroud)

我当前的线性程序读取文件,记住内存中的启动事件,并在找到相应的结束事件后将经过的时间写入文件(其他事件的行当前被忽略,ERROR事件使UUID失效,它将也被忽略了)1

我想将其移植到Hadoop/MapReduce程序.但我不知道如何匹配条目.拆分/标记文件很容易,我想找到匹配将是Reduce-Class.但那会是什么样子?如何在MapReduce作业中找到mathing条目?

请记住,我的主要关注点是了解Hadopo/MapReduce; 欢迎链接到Pig和其他Apache程序,但我想用纯Hadoop/MapReduce来解决这个问题.谢谢.

1) 由于日志来自正在运行的应用程序,因此一些启动事件可能还没有相应的结束事件,并且由于日志文件拆分,将会有没有启动事件的结束事件

java hadoop mapreduce

4
推荐指数
1
解决办法
1950
查看次数