okta-spring

“我喜欢编写身份验证和授权代码。” 〜从来没有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

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

@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

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

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

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

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

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

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

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

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

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

  5. 10 种保护 Spring Boot 应用的绝佳方法

    Spring Boot大大简化了Spring应用程序的开发.它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量XML配置,Spring Boot无疑是一 ...

  6. 10 种保护 Spring Boot 应用的绝佳方法 1

    Spring Boot大大简化了Spring应用程序的开发.它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量XML配置,Spring Boot无疑是一 ...

  7. 使用基本身份验证来保护Spring Boot REST API

    这是我的Spring Boot Blog帖子系列的第三篇文章. 在第一篇文章中,我谈到了我使用Spring Boot创建RESTFul Services的经验. 然后我将样本扩展到 与Swagger文 ...

  8. 企业内部钉钉H5微应用(免登录)Spring Boot项目实战

    文章目录 前言 一.准备工作 1.开发前准备: 2.钉钉微应用的免登流程: 二.开放过程 1.新建企业号 2.创建H5微应用 3.项目编码 三.微应用配置 四.启动项目后即可访问,应用截图 总结 前言 ...

  9. smart-sso单点登录(三):App登录支持

    前言 smart-sso使用Oauth2密码模式由客户端代理转发http请求到服务端完成APP登录认证.客户端后端本地存储服务端返回的accessToken和Session映射关系.需注意的地方如下: ...

最新文章

  1. 那些年困扰 Linux 的蠕虫、病毒和木马
  2. Yet Another Counting Problem CodeForces - 1342C(规律+前缀和)
  3. oracle 窗口函数 (keep)
  4. root 进入ssh 出现问题
  5. 教授呼吁:应当让博士生先回学校
  6. 安装TensorFlow-gpu的注意点
  7. c语言程序设计-简单的c语言程序
  8. 棋牌游戏服务器架构设计
  9. Unity Android 跳转拨号界面和一键加群
  10. ABAP TRANSPORTING NO FIELDS 用法
  11. 服务器 按键切换系统,服务器主机切换按键
  12. 估值近百亿,“创维三把手”酷开科技能否顺利赶考?
  13. memcache数据组织
  14. 可以搜python题答案的app-python实现百万答题自动百度搜索答案
  15. [Unity插件]物体轮廓特效HighlightPlus
  16. codewars练习(5)backwardsPrime--提交失败-Execution Timed Out (12000 ms)
  17. 记事中快速加当前日期时间
  18. Pandas之Series和DateFrame详解
  19. 通过钉钉网页上的js学习xss打cookie
  20. create sequence 序列号

热门文章

  1. [八省联考2018]劈配 (匈牙利)
  2. 8.13模拟:分治二分倍增快速幂
  3. 字符串:凯撒密码(洛谷P1914)
  4. P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
  5. P5952-[POI2018]水箱【最小生成树】
  6. nssl1259-sequence【组合数,差分】
  7. Sentinel(九)之热点参数限流
  8. java io系列09之 FileDescriptor总结
  9. Oracle入门(十二H)之设置、恢复和删除不可用列
  10. Maven精选系列--eclipse各种操作