那里有正规网站开发培训学校,西安地产网站建设,codeus企业wordpress,南京建设工程质量监督站网站通过aws部署推荐系统朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户#xff1f; 立即尝试Okta的API和Java SDK。 数分钟之内即可在任何应用程序中对用户进行身份验证#xff0c;管理和保护。 几乎所有应用程序都依赖于身份验证。 开发人员以及雇用他们的公司都想确认… 通过aws部署推荐系统 朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户 立即尝试Okta的API和Java SDK。 数分钟之内即可在任何应用程序中对用户进行身份验证管理和保护。 几乎所有应用程序都依赖于身份验证。 开发人员以及雇用他们的公司都想确认谁在发出请求他们是谁。 而且这需要足够快地进行以实现良好的用户体验。 幸运的是有很棒的工具可以提供帮助。 具有Spring Security的Spring Boot是基于Java的Web开发的绝佳解决方案。 使用相对较少的代码开发人员可以轻松安全地实现测试更新和扩展身份验证方案。 在本教程中您将在Spring Boot中使用OAuth 2.0 / OpenID Connect和Okta作为OAuth提供程序构建一个非常简单的“ Hello World”应用程序。 它将使用AWS作为云提供商并通过AWS Elastic Beanstalk进行部署。 为什么选择AWS Elastic Beanstalk 在云基础设施提供商方面AWS一直是市场的领导者其服务使部署云应用程序变得快速而轻松。 Elastic Beanstalk是一项部署和配置服务通过自动完成在AWS基础架构上设置应用程序的过程您只需单击几下即可部署整个基础架构。 此外它通过自动置备负载平衡自动扩展和运行状况监视来帮助管理应用程序的资源利用。 创建一个Spring Boot应用程序 在开始云部署之前您将需要应用程序本身。 您的应用程序的第一个版本将有一个简单的页面其中将显示Hello, {user}! 如果输入用户名否则它将显示Hello, World! 除此以外。 您将使用Spring MVC和Thymeleaf来完成任务。 Thymeleaf是服务器端模板引擎。 它允许您在客户端的Web浏览器中呈现服务器参数之前将服务器参数传递给HTML。 您可以从头开始创建项目吗 可以但是您不需要。 您可以改用Spring Initializr。 这将帮助您生成需要的所有依赖项的项目。 转到Spring Initializr网站 然后输入以下信息 - Project: Maven Project
- Language: Java
- Group: com.okta
- Artifact: hello-world
- Dependencies: Spring Web Starter, Thymeleaf 您可以选择使用Maven或Gradle生成项目。 本教程显示了使用Maven的步骤但是您可以在Gradle上轻松地遵循它。 提供信息后单击生成项目 。 该站点将生成一个zip文件您可以下载并解压缩该文件。 在您最喜欢的IDE中打开项目一切顺利 创建网页 使用Spring MVC您需要创建一个Controller来表示网页。 它将映射到端点/hello 还映射到/ 它代表主页。 它返回hello-world模板作为响应。 创建类HelloWorldController Controller
public class HelloWorldController {GetMapping({/, hello})public String helloWorld(RequestParam(required false, defaultValue World) String name, Model model) {model.addAttribute(name, name);return hello-world;}
} 到目前为止一切都很好。 接下来创建html模板。 但是此模板是什么 你为什么需要它 模板是Spring MVC用于在用户浏览器中呈现信息HTML页面。 您定义Thymeleaf HTML页面以接收model对象中定义的所有属性。 在src\main\resources\templates 创建文件hello-world.html !DOCTYPE html
html xmlns:thhttp://www.thymeleaf.orgbodyh1 th:textHello, ${name} !/h1/body
/html 这将创建一个HTML页面该页面在正文中显示h1标记以及问候消息。 ${name}属性不是本机HTML它是Thymeleaf的一部分它从model对象接收值以在将信息发送到浏览器之前呈现信息。 现在您已经创建了控制器和模板可以运行它看看它是否有效 打开HelloWorldApplication类并执行main方法。 或者从命令行执行 ./mvnw spring-boot:run 如果在Web浏览器中转到http// localhost8080 / 将看到以下消息 Hello, World! 如果需要自定义消息则可以添加name参数。 例如 http// localhost8080 /name Daniel将返回 Hello, Daniel添加Spring Security 对于SaaS开发人员希望确保其应用程序安全。 用户不应看到其他用户的数据。 Spring Security处理身份验证授权和其他安全方面。 要将其添加到您的项目中请转到pom.xml文件并在dependencies标记内添加以下代码 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId
/dependency 而已 当您将Spring Security添加为依赖项时默认情况下会启用安全性。 当您尝试访问端点时必须先登录才能继续。 让我们测试一下。 运行该应用程序然后转到http// localhost8080 / 。 您将看到以下结果 如预期的那样现在它将您重定向到登录页面该页面将要求用户名和密码。 您现在必须问自己我应该使用哪个用户名和密码 默认用户名是user 。 每次设置应用程序启动时Spring都会更改它而不是设置默认密码。 您可以通过查看应用程序日志来查看当前的日志。 寻找这样的东西 Using generated security password: 29aa0d09-eaca-47ae-bcad-e5b22affd466 在实际的应用程序中此行为不是您想要的。 用户期望密码保持不变除非他们自己更改。 让我们添加一个配置来实现它。 创建类SecurityConfiguration EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {private PasswordEncoder passwordEncoder new BCryptPasswordEncoder();Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().passwordEncoder(passwordEncoder()).withUser(john.doe).password(passwordEncoder().encode(secret)).roles(USER);}Beanpublic PasswordEncoder passwordEncoder() {return passwordEncoder;}
} 上面的类扩展了WebSecurityConfigurerAdapter 并允许您更改身份验证管理方法。 在此示例中您创建了一个用户但是您可以创建任意数量的用户。 只需在第一个之后添加一个新的withUser调用即可。 现在用户已通过您的应用程序身份验证您不再需要输入用户名。 而是您将基于当前用户显示信息。 在HelloWorldController内部在代码中进行以下更改 Controller
public class HelloWorldController {GetMapping({/, hello})public String helloWorld(Model model, Principal principal) {model.addAttribute(name, principal.getName());return hello-world;}
} Principal界面存储当前用户的名称。 Spring Security处理繁琐的工作您只需要将其添加为参数该方法就会获得正确的值。 要查看此更改请停止应用程序并再次运行。 如果您访问http// localhost8080 / 它将要求您再次登录。 使用john.doe作为用户名secret作为密码。 提交信息后您将看到以下文本 Hello, john.doe! 现在您可以在云中部署应用程序了 将应用程序部署到AWS Elastic Beanstalk 要部署服务您将使用AWS Elastic Beanstalk。 如果您没有AWS账户请在此处创建一个账户。 登录到AWS控制台后 转到服务然后在搜索中键入Elastic Beanstalk 。 单击它它会将您重定向到“欢迎”页面。 单击入门按钮开始在云中创建您的应用程序。 您将看到以下屏幕 在这里您将创建一个Web应用程序。 在上面的字段中输入以下信息 Application name: hello-world
Platform: Java
Application code: Upload Your code 在上传代码之前您需要将其导出为JAR文件。 进入您的应用程序文件夹然后键入以下命令 ./mvnw package -DskipTests 运行后在target文件夹下上传文件hello-world-0.0.1-SNAPSHOT.jar 。 上传完成后单击“ Create application按钮。 AWS将开始创建环境显示该过程中发生的情况的日志。 设置环境后AWS会将您重定向到仪表板。 在信息中心菜单上方您会找到用于访问该应用程序的URL。 在新标签页中打开它它将加载您的网页。 现在您会收到502错误响应这是预期的。 默认情况下Elastic Beanstalk在端口5000上运行应用程序而Spring Boot在端口8080上运行。让我们指导您的应用程序在端口5000上运行以解决此问题。 单击配置仪表盘菜单。 您将看到以下屏幕 您可以在环境中更改许多变量和功能添加负载平衡器增加实例数量或在这种情况下添加环境变量。 转到软件卡然后单击“ 修改” 。 查找“ Environment properties然后将以下值添加到列表中 SERVER_PORT 5000 更改后单击Apply按钮然后等待AWS在环境中应用更改。 当消息Environment update completed successfully. 出现时再次打开URL。 现在工作了 输入您在代码中定义的用户名和密码john.doe和secret 。 然后它将重定向到hello页面该页面将向您显示与本地环境相同的结果 Hello, john.doe! 如果遇到问题可以随时检查日志。 在菜单中单击Logs 这会将您重定向到以下页面 转到Request Logs Full Logs 。 这将生成一个包含您所有环境日志的zip文件 下载并解压缩文件 转到var/log/rotated 在那边您会从您的应用程序中找到另一个zip文件。 解压缩它然后打开解压缩的文件以查看应用程序日志 到目前为止一切正常吗 恭喜您的第一个Spring Boot应用程序已在云中运行 太好了不是吗 但是等等在庆祝之前您还有很多工作要做。 使您的应用程序安全生产就绪 还记得您创建了一个用户并将凭据放入代码中吗 该策略可能适用于测试目的但是对于实际应用而言这是一个巨大的难题。 处理身份管理不是一件容易的事您将希望使用服务而不是“自己动手”。 Okta是出色的身份管理服务可立即提供身份提供者身份验证授权和用户安全性。 让我们配置您的应用程序以使用它。 创建一个Okta帐户 登录到您的帐户 点击应用 单击添加应用程序 选择Web 然后单击下一步按钮。 在表单中填写以下选项 Name: hello-world
Base URIs: http://localhost:8080/, ${BEANSTALK_URL}
Login redirect URLs: http://localhost:8080/login/oauth2/code/okta, ${BEANSTALK_URI}/login/oauth2/code/okta
Grant Type allowed: Client Credentials. Authorization Code 将${BEANSTALK_URL}更改${BEANSTALK_URL}您的AWS环境URL。 例如我的值是HelloWorld-env.t3z2mwuzhi.us-east-1.elasticbeanstalk.com 。 大 您将本地和生产环境列入了白名单。 如果您从他们的Okta应用程序中调用它将允许该请求。 使用Okta和OAuth 2.0保护应用程序安全 在Okta中使用您的应用程序您需要更改代码才能开始使用它。 Okta从现在开始为您处理身份验证。 用okta依赖项替换pom.xml文件中的Spring Security依赖项该文件本身包括Spring Security。 将以下代码放入dependencies标记内 dependencygroupIdcom.okta.spring/groupIdartifactIdokta-spring-boot-starter/artifactIdversion1.2.1/version
/dependency 该库将处理您的应用程序与Okta之间的通信。 您所要做的就是识别您的Okta信息。 在本地设置以下环境变量 OKTA_OAUTH2_ISSUER{ORG_URL}/oauth2/default
OKTA_OAUTH2_CLIENT_ID{CLIENT_ID}
OKTA_OAUTH2_CLIENT_SECRET{CLIENT_SECRET} 大 您将本地和生产环境列入了白名单。 如果您从这些地方调用Okta应用程序它将允许该请求。 您的{ORG_URL}将显示在Okta仪表板中只需单击菜单中的“ Dashboard ”即可。 您将在右上角看到组织URL。 您可以在Okta应用程序中找到{CLIENT_ID}和{CLIENT_SECRET} 在Okta的菜单中转到“ Applications 选择hello-world应用程序 单击General选项卡 向下滚动到Client Credentials 在这里您将看到客户端ID和密码。 通过这些更改您现在可以通过OpenID Connect进行身份验证。 当用户转到主页时您的应用程序会将其重定向到Okta登录页面然后返回到网页。 OpenID Connect是OAuth 2.0授权框架之上的一个薄层专注于身份和身份验证。 使用OpenID Connect您需要更改接收经过身份验证的用户的方式。 转到HelloWorldController类并更新代码 Controller
public class HelloWorldController {GetMapping({/, hello})public String helloWorld(Model model, AuthenticationPrincipal OidcUser user) {model.addAttribute(name, user.getGivenName());return hello-world;}
} 这仍然使用模型将身份验证信息传递给Thymeleaf但是从使用Principal转变为使用OidcUser 。 这使您可以检索所需的任何属性。 在此示例中我们需要given_name属性。 注意由于您使用Okta进行身份验证因此您不再需要旧的配置。 继续并删除SecurityConfiguration类。 让我们运行该应用程序 再次启动它然后转到http// localhost8080 / 。 注意您已重定向到Okta登录页面 如果提供用户名和密码则将您重定向到/端点。 就我而言我将看到以下消息 Hello, Daniel! 现在您有了一个安全的Web应用程序 最好的部分您不必担心自己实施身份验证。 在AWS Elastic Beanstalk上重新部署应用程序 您有一个可用于生产的应用程序因此将其发送到您的生产环境 登录到AWS控制台 然后转到您的Elastic Beanstalk环境 。 选择在先前步骤中创建的环境。 在菜单中单击Configuration 按下Software卡内的Modify按钮。 添加您在本地环境中使用的相同环境变量 OKTA_OAUTH2_ISSUER{ORG_URL}/oauth2/default
OKTA_OAUTH2_CLIENT_ID{CLIENT_ID}
OKTA_OAUTH2_CLIENT_SECRET{CLIENT_SECRET} 进行更改后单击“ Apply 。 最后一步是将应用程序更新到最新版本。 进入项目文件夹然后键入 ./mvnw package -DskipTests 此命令使用您的应用程序的当前版本生成一个JAR文件。 转到AWS Elastic Beanstalk仪表板然后单击上Upload and deploy按钮。 选择创建的aven文件例如hello-word-0.0.1-SNAPSHOT.jar 然后单击Deploy按钮。 为确保其正常运行请单击AWS Elastic Beanstalk URL。 如果您尚未登录它将把您重定向到Okta的登录名。当您输入有效的凭据时它将把您重定向到Hello World页面 就我而言结果将是 Hello, Daniel! 恭喜你 您已在云中部署了应用程序并以正确的方式处理了安全性。 如果您想看一下代码可以在此处找到带有示例的存储库。 您是否想全面了解有关安全性OAuth 2.0和Spring的更多信息 我们建议这些职位 使用Spring Security进行简单身份验证 通过Spring Boot和OAuth 2.0轻松进行单点登录 与往常一样在下面留下评论不要忘了在Twitter上关注我们并订阅我们的YouTube频道。 “使用AWS Elastic Beanstalk轻松进行Spring Boot部署”最初于2019年8月7日发布在Okta Developer Blog上。 朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户 立即尝试Okta的API和Java SDK。 数分钟之内即可在任何应用程序中对用户进行身份验证管理和保护。 翻译自: https://www.javacodegeeks.com/2019/09/easy-spring-boot-deployment-aws-elastic-beanstalk.html通过aws部署推荐系统