“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。

您可以使用SpringBoot和Okta在不到20分钟的时间内启动具有完整用户身份和授权管理的企业级REST服务器。 Spring Boot及其Starter软件包提供了可用于生产的Tomcat服务器,Okta使用OAuth保护您的API。

本教程将引导您完成整个过程。 Okta在线后,只需几行代码和配置就可以轻松添加功能齐全的客户端身份验证和用户管理! 同样在本教程中,我将向您展示安全的Spring Boot服务器如何能够将Web内容或用作后端API,但仅向已向您注册的用户提供。 准备? 我们走吧!

Spring Boot和Okta入门

从零到安全的Web服务器不会一flash而就。 要完成此项目,您将:

  • 使用Spring Initializr下载全新的Spring Boot入门项目
  • 创建一个新的Okta帐户并访问您的管理仪表板
  • 添加几行代码并进行配置
  • 请参阅在新服务器上运行的单点登录!

为什么是春天?

Spring是一套成熟,使用广泛且文档齐全的工具和库,旨在使您成为Java开发人员更加轻松。 它提供了大量功能,从简单的数据库连接和服务器创建(如我们在本教程中将看到的)到交钥匙安全性,消息传递,移动开发等。

Spring Boot是Spring的一个子项目,致力于使超快速和轻松地引导新的Spring应用程序成为可能。 它的主要吸引力之一是它不需要乱糟糟的配置文件(关于早期Spring生态系统的常见抱怨)。 正如我们将很快看到的,使用一些简单的注释和Maven依赖关系将使我们在几分钟之内从零迁移到安全的Web服务器。

下载并初始化新的Spring Boot项目

Spring提供了一个名为Spring Initializr的工具,使您可以单击创建并下载一个包含新Spring Boot项目的zip文件。 转至该处并创建一个包含WebSecurity入门程序的新项目。 我保留了默认的工件和组,并在我的主目录中demo.zip压缩了demo.zip文件。 解压缩了以下文件:

那些熟悉Maven的人会认识到pom.xml文件。 仅有四个小依赖项从Spring中引入了大量功能:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><scope>test</scope>
</dependency>

在获得有趣的东西之前,请通过以下方式运行服务器,以确保一切正常

./mvnw spring-boot:run

在所有丰富多彩的日志语句中,要查找的语句可能倒数第二:

Tomcat started on port(s): 8080 (http)


因为在创建项目时请求了Spring Security Starter软件包,所以默认情况下,使用Basic Authentication来保护服务器。 可以通过打开浏览器并访问以下命令来验证这一点:

http://localhost:8080

将出现一个浏览器对话框,询问您的用户名和密码(尚未设置):

不用费心在新服务器中设置硬编码的用户名和密码,突然访问完整的OAuth会话管理,用户管理,站点统计信息等等是否更好? 我们可以在Okta的短短几分钟内做到这一点!

使用Okta将OAuth身份验证添加到您的服务器

现在是时候通过用户管理,密钥和凭据存储和轮换,OAuth服务器维护,忘记的密码处理以及精巧的管理UI来增强服务器。 这听起来很麻烦! 幸运的是,使用Okta的用户管理和授权服务已为您完成了此工作。 您只需将Okta依赖项插入到Spring Boot项目中,配置一些安全性设置,然后只需几个简单的步骤即可获得所有这些安全性和一揽子筹码。 就是这样。

获取您的Okta凭证

如果您是Okta的新手,可以在这里注册一个免费的开发者帐户。 您会收到一封邀请电子邮件,其中包含您的用户名(您的电子邮件地址)和一个临时密码。 按照电子邮件中提供的链接,使用这些凭据登录,并首次创建您的管理员帐户。 将要求您创建一个新密码,并在完成此页面后,您将找到Okta开发人员控制台。 这里有很多值得探索的地方,因此,如果您愿意,可以休息一下并四处浏览!

准备好继续时,请转到Okta仪表板中的“ 应用程序”选项卡。 它看起来应该像这样:

单击绿色的“ 添加应用程序”按钮,由于要构建Web服务器,因此选择Web (.NET,Java等)作为应用程序类型,然后单击“ 下一步”

在随后的设置页面中,有一个默认值可以更改。 在“ 登录重定向URI”字段中,将默认值替换为:

http://localhost:8080/login

然后,点击完成 。 这会将您带入新应用程序的基础。 这里也有很多功能,但是现在您需要在仪表板“ 应用程序”主选项卡的“ 常规”子选项卡中记下一些信息。 前两个是位于页面底部附近的客户端ID客户端密钥

请妥善保管并确保安全! 您将在Spring Boot服务器中使用它们来通过Okta进行身份验证。

接下来,转到仪表板顶部的“ API”选项卡,然后在此屏幕中,注意Issuer URI 。 如果看不到,请确保您位于“ 授权服务器”子选项卡上。 这是您的服务器将与之通信的Okta OAuth授权服务器。

现在,您的Client IDClient SecretIssuer URI被安全地保存了; 是时候将Okta插入服务器了。 在pom.xml文件中添加Okta和Spring OAuth依赖项以及其他依赖项:

<dependency><groupId>com.okta.spring</groupId><artifactId>okta-spring-boot-starter</artifactId><version>0.2.0</version>
</dependency>
<dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.2.0.RELEASE</version>
</dependency>

接下来,将三个值添加到: src/main/resources/application.properties

okta.oauth2.issuer=(your **Issuer URI**)
okta.oauth2.clientId=(your **Client ID**)
okta.oauth2.clientSecret=(your **Client Secret**)

像这样:

okta.oauth2.issuer=https://dev-279161.oktapreview.com/oauth2/default
okta.oauth2.clientId=0oacqif7do3e0hD0h7
okta.oauth2.clientSecret=(your **Client Secret**)

在收获Okta所能提供的一切之前的最后一步-在服务器上使用它! 对于本文,目标是添加单点登录身份验证,以便只有向您注册的用户才能登录到您的服务器并与其进行交互。 主应用程序类需要告诉Okta客户端库启用单点登录,这是通过在主应用程序类中添加以下注释来实现的: src/main/java/com/example/demo/DemoApplication.java

@EnableOAuth2Sso

在进行此操作时,不妨添加一个终结点,该终结点将对我们将要获得的新用户信息起作用。 您可以通过以下方式装饰主Application类:

@RestController

Okta通过java.security.Principal接口提供调用者的用户ID。 默认情况下,这是用户的电子邮件地址。 您可以添加一个与用户的电子邮件地址相呼应的请求处理程序,如下所示:

@GetMapping("/")
public String echoTheUsersEmailAddress(Principal principal) {return "Hey there! Your email address is: " + principal.getName();
}

使用新的导入,注释和请求处理程序,主DemoApplication.java应如下所示:

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.security.Principal;@RestController
@EnableOAuth2Sso
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@GetMapping("/")public String echoTheUsersEmailAddress(Principal principal) {return "Hey there! Your email address is: " + principal.getName();}
}

当您通过./mvnw spring-boot:run重新启动服务器并在浏览器中访问http://localhost:8080时,您将被带到个人的Okta子域进行登录:

您可以使用创建Okta帐户时设置的电子邮件和密码登录,因为默认情况下您是作为“我的Web应用程序” Okta应用程序中的用户添加的。 除非您在管理控制台中重新创建了新用户,否则这是唯一被授予访问您网站权限的用户。

登录后,您将以经过身份验证的用户身份重定向回您的站点,并且应该会看到您的电子邮件地址已回显给您!

下一步是什么?

现在,当您为应用创建或注册新用户时,真正的乐趣就开始了! 花一些时间尝试不同的权限级别。 查看审核日志以查看您的用户的活动。 将用户添加到组,并自定义和控制电子邮件和短信通信。

有兴趣了解更多吗? 查看以下其他Java资源:

  • 我们的Java产品文档
  • 使用Spring Boot和OAuth保护您的SPA
  • 使用Spring Security和Thymeleaf向您的应用程序添加基于角色的访问控制

如果您对此内容或我们的任何其他内容有疑问(或只是想聊天!),请在Twitter @OktaDev上与我们联系 。 我们很乐意听取您的意见!

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。

在15分钟内将Single Sign-on添加到您的Spring Boot Web App中最初于2017年11月20日发布在Okta开发人员博客上。

翻译自: https://www.javacodegeeks.com/2018/01/secure-spring-boot-web-app-single-sign-okta.html

通过Okta的单点登录保护Spring Boot Web App的安全相关推荐

  1. okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全

    okta-spring "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...

  2. okta使用_使用Okta的单点登录保护您的Vert.x服务器

    okta使用 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验 ...

  3. 使用Okta的单点登录保护您的Vert.x服务器

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Vert ...

  4. 如何部署同一个Spring boot web 应用到不同的环境

    在现实项目当中我们往往都有不同的部署环境,例如:dev数据库, system test 数据库 和production 数据库, 那么如何把同一个spring boot web app 部署到不同的数 ...

  5. 这些保护Spring Boot 应用的方法,你都用了吗?

    转载自   这些保护Spring Boot 应用的方法,你都用了吗? Spring Boot大大简化了Spring应用程序的开发.它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你 ...

  6. Spring Boot Web

    一. 概述 下面我们将进入 SpringBoot 基础阶段的学习. 在没有正式的学习 SpringBoot 之前,我们要先来了解下什么是 Spring . 我们可以打开 Spring 的官网 ( ht ...

  7. PART 5: INTEGRATING SPRING SECURITY WITH SPRING BOOT WEB

    转自:http://justinrodenbostel.com/2014/05/30/part-5-integrating-spring-security-with-spring-boot-web/ ...

  8. spring boot web jar说明

    spring boot web jar说明 spring-boot-starter-web: spring-boot-starter:spring核心jar,自动配置支持.日志和YAML spring ...

  9. Spring boot web(2):web综合开发

    1 web开发 Spring boot web 开发非常简单,其中包括常用的 json输出.filters.property.log等 1.1 json接口开发 在以前的Spring 开发我么提供js ...

最新文章

  1. 交互式线上科学期刊Distill上线,Ian Goodfellow表示“学ML就找它”
  2. hdu-acm steps FatMouse's Speed
  3. Windows下使用MinGw和gcc构建第一个C程序、g++构建第一个C++程序
  4. 2022-03-31 一些后续
  5. boost::type_erasure::tuple相关的测试程序
  6. 注解方式使用 Redis 缓存
  7. mysql语句中把string类型字段转datetime类型
  8. underscore.js源码研究(5)
  9. python编程*三角形图形创意图片_Python图形编程探索系列-04-网上图片与标签组件的结合...
  10. 电力-103规约主站端实现
  11. wⅰndows办公软件2003,办公软件2003官方下载-Office 2003官方下载免费完整版-华军软件园...
  12. Web服务稳定性测试 负载测试 可靠性测试 方案 测试报告
  13. 详解Unity中的粒子系统Particle System (七)
  14. STA分析(六) cross talk and noise
  15. springboot项目本地运行无问题,Linux系统报错org.thymeleaf.exceptions.TemplateInputException
  16. win10,win11后在cmd命令行输入python自动调用微软应用商店
  17. html背景颜色上边白下边红,HTML中,网页正文的默认颜色是红色,背景颜色默认是白色。...
  18. 葵花宝典之java笔记
  19. 分布式文件系统之GPFS
  20. 索尼常务董事:绩效主义毁了索尼

热门文章

  1. dp 树状数组 逆序元组
  2. SpringBoot整合kafka(实现producer和consumer)
  3. 集合框架 Queue---ArrayBlockingQueue
  4. Oracle入门(十四.3)之创建PL / SQL块
  5. 分布式作业 Elastic-Job 快速上手指南
  6. Java Web应用的代码分层最佳实践
  7. 20级、19级 | 一天一瞬间!【日更】
  8. 记录程序人生2020.8.11
  9. 《四世同堂》金句摘抄(十六)
  10. hibernate配置详情2(Dept.hbm.xml)