当前位置: 首页 > news >正文

怎么做售房网站网站的域名

怎么做售房网站,网站的域名,做网站是否需要自购服务器,渭南商铺网站建设✨✨谢谢大家捧场#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右#xff0c;一定要天天开心哦#xff01;✨✨ #x1f388;#x1f388;作者主页#xff1a; 喔的嘛呀#x1f388;#x1f388; ✨✨ 帅哥美女们#xff0c;我们共同加油#xff01;一起进步祝屏幕前的小伙伴们每天都有好运相伴左右一定要天天开心哦✨✨  作者主页 喔的嘛呀 ✨✨ 帅哥美女们我们共同加油一起进步✨✨  目录 引言 一、什么是单点登录SSO 二、SSO的工作原理 三、SSO的具体实现 SSO的核心概念 1. 令牌Token机制 2. 身份验证协议 SSO实现步骤 1. 选择身份验证协议 2. 创建认证服务器 3. 创建资源服务器 4. 客户端集成 总结 引言 随着互联网应用的不断发展用户需要在多个系统之间无缝切换而单点登录Single Sign-On简称SSO技术应运而生。本篇博客将深入探讨Java中如何实现单点登录通过详细代码和深度解析带领读者逐步了解SSO的原理、流程和具体实现。 一、什么是单点登录SSO 单点登录是一种身份认证的机制允许用户在访问多个相关但独立的软件系统时只需一次登录便可无缝访问所有系统。这大大提高了用户体验并简化了管理和维护的复杂性。 二、SSO的工作原理 SSO的工作原理基于令牌Token和身份验证协议。用户一旦登录系统将获得一个令牌该令牌包含了用户的身份信息。在之后的访问中用户只需提供该令牌而无需再次输入用户名和密码。 三、SSO的具体实现 SSO的核心概念 在深入代码之前让我们先理解SSO的核心概念。 1. 令牌Token机制 SSO通过使用令牌实现用户的无缝切换。用户在登录成功后获得一个令牌该令牌包含了用户的身份信息。在之后的访问中用户只需提供有效的令牌而无需再次输入用户名和密码。 2. 身份验证协议 常见的身份验证协议包括OAuth 2.0和OpenID Connect。OAuth 2.0主要用于授权而OpenID Connect在OAuth 2.0的基础上提供了身份验证的支持。 SSO实现步骤 1. 选择身份验证协议 在我们的实现中我们选择使用OAuth 2.0和OpenID Connect协议。这两者的结合提供了强大的身份验证和授权机制。 2. 创建认证服务器 认证服务器是SSO系统的核心。我们使用Spring Security OAuth2和Spring Boot来实现一个简单但强大的认证服务器。 创建认证服务器是实现单点登录SSO系统的关键步骤之一。在这里我们将使用Spring Security OAuth2和Spring Boot创建一个简单而强大的认证服务器。以下是详细的代码示例 // 认证服务器配置类 Configuration EnableAuthorizationServer public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {Autowiredprivate AuthenticationManager authenticationManager;Autowiredprivate UserDetailsService userDetailsService;Autowiredprivate DataSource dataSource;Value(${security.oauth2.client.client-id})private String clientId;Value(${security.oauth2.client.client-secret})private String clientSecret;Value(${security.oauth2.client.authorized-grant-types})private String[] authorizedGrantTypes;Value(${security.oauth2.client.scopes})private String[] scopes;Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {clients.jdbc(dataSource);}Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {endpoints.authenticationManager(authenticationManager).userDetailsService(userDetailsService);}Overridepublic void configure(AuthorizationServerSecurityConfigurer security) throws Exception {security.tokenKeyAccess(permitAll()).checkTokenAccess(isAuthenticated());}Beanpublic JdbcTokenStore tokenStore() {return new JdbcTokenStore(dataSource);}Beanpublic TokenStoreUserApprovalHandler userApprovalHandler(TokenStore tokenStore) {TokenStoreUserApprovalHandler handler new TokenStoreUserApprovalHandler();handler.setTokenStore(tokenStore);handler.setRequestFactory(new DefaultOAuth2RequestFactory(clientId));handler.setClientDetailsService(clientDetailsService());handler.setUseApprovalStore(true);return handler;}Beanpublic ApprovalStore approvalStore(TokenStore tokenStore) {TokenApprovalStore store new TokenApprovalStore();store.setTokenStore(tokenStore);return store;}Beanpublic ClientDetailsService clientDetailsService() {return new JdbcClientDetailsService(dataSource);}Beanpublic DefaultTokenServices tokenServices() {DefaultTokenServices tokenServices new DefaultTokenServices();tokenServices.setTokenStore(tokenStore());tokenServices.setSupportRefreshToken(true);tokenServices.setClientDetailsService(clientDetailsService());tokenServices.setAuthenticationManager(authenticationManager);return tokenServices;}Beanpublic BCryptPasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Beanpublic OAuth2RequestFactory requestFactory() {return new DefaultOAuth2RequestFactory(clientDetailsService());}BeanPrimarypublic DefaultTokenServices defaultTokenServices() {DefaultTokenServices defaultTokenServices new DefaultTokenServices();defaultTokenServices.setTokenStore(tokenStore());defaultTokenServices.setSupportRefreshToken(true);defaultTokenServices.setClientDetailsService(clientDetailsService());return defaultTokenServices;}Beanpublic BCryptPasswordEncoder bCryptPasswordEncoder() {return new BCryptPasswordEncoder();}Beanpublic DataSourceInitializer dataSourceInitializer(DataSource dataSource) {DataSourceInitializer initializer new DataSourceInitializer();initializer.setDataSource(dataSource);initializer.setDatabasePopulator(databasePopulator());return initializer;}private DatabasePopulator databasePopulator() {ResourceDatabasePopulator populator new ResourceDatabasePopulator();populator.addScript(new ClassPathResource(schema.sql));return populator;} }上述代码中我们配置了认证服务器的各个方面包括客户端信息、用户信息、令牌存储、用户批准处理等。这是一个基础配置你可以根据实际需求进行调整和扩展。 此外为了更好地演示我们在配置中引入了一些外部配置例如client-id、client-secret、authorized-grant-types、scopes你可以在应用的配置文件中定义这些属性。 通过这个认证服务器的配置我们为SSO系统打下了坚实的基础。接下来你可以继续配置资源服务器、客户端应用并深入了解OAuth2和OpenID Connect协议的更多细节。 3. 创建资源服务器 在单点登录SSO系统中资源服务器的作用是验证令牌并提供受保护的资源。以下是使用Spring Security实现资源服务器的详细代码示例 // 资源服务器配置类 Configuration EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter {Value(${security.oauth2.resource.id})private String resourceId;Overridepublic void configure(ResourceServerSecurityConfigurer resources) throws Exception {resources.resourceId(resourceId);}Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/public/**).permitAll().antMatchers(/api/**).authenticated();} }在上述代码中我们配置了资源服务器的两个主要部分资源ID和HTTP安全性。 configure(ResourceServerSecurityConfigurer resources) 方法用于配置资源服务器的资源ID。资源ID是资源服务器标识自身的唯一标识符与授权服务器中的配置相对应。 configure(HttpSecurity http) 方法定义了资源服务器的HTTP安全性配置。在这个例子中我们允许对 /public/** 路径的请求进行公开访问而对 /api/** 路径的请求进行身份验证。 请注意你可能需要根据实际应用的需求进行调整和扩展例如更复杂的授权规则、自定义访问决策等。 为了更好地演示我们引入了一个外部配置security.oauth2.resource.id你可以在应用的配置文件中定义这个属性。 这个资源服务器配置类将帮助你在SSO系统中建立一个安全的资源服务确保只有合法的用户通过有效的令牌能够访问受保护的资源。接下来你可以继续配置客户端应用使其能够通过令牌访问资源服务器上的资源。 4. 客户端集成 在单点登录SSO系统中客户端应用需要集成认证服务器以获取令牌并访问资源服务器。以下是使用Spring Security OAuth2 Client实现客户端集成的详细代码示例 // 客户端配置类 Configuration EnableOAuth2Client public class OAuth2ClientConfig {Autowiredprivate OAuth2RestTemplate restTemplate;Beanpublic OAuth2RestTemplate restTemplate(OAuth2ProtectedResourceDetails resource) {return new OAuth2RestTemplate(resource);}Beanpublic OAuth2ProtectedResourceDetails resourceDetails() {AuthorizationCodeResourceDetails details new AuthorizationCodeResourceDetails();details.setClientId(client-id);details.setClientSecret(client-secret);details.setAccessTokenUri(http://localhost:8080/oauth/token);details.setUserAuthorizationUri(http://localhost:8080/oauth/authorize);details.setScope(Arrays.asList(read, write));return details;}Beanpublic RequestInterceptor oauth2FeignRequestInterceptor(OAuth2ClientContext oAuth2ClientContext,OAuth2ProtectedResourceDetails resource) {return new OAuth2FeignRequestInterceptor(oAuth2ClientContext, resource);} }在上述代码中我们配置了客户端的关键组件 OAuth2RestTemplate: 用于与认证服务器进行交互获取令牌等。 OAuth2ProtectedResourceDetails: 包含了客户端的配置信息如客户端ID、客户端密钥、授权服务器的地址等。 RequestInterceptor: 用于Feign客户端确保在使用Feign进行远程调用时令牌被正确传递。 在实际应用中你可能需要更复杂的配置例如刷新令牌、处理令牌错误、自定义用户信息等。这个配置类提供了一个基础的配置你可以根据具体需求进行扩展。 请注意上述代码中的URL和客户端信息应该与你的认证服务器的配置相匹配。同时你可以在应用的配置文件中定义这些属性以便更好地管理和维护。 通过这个客户端配置你的应用将能够通过OAuth2协议与认证服务器进行交互获取令牌并在需要时访问资源服务器上的受保护资源。这是SSO系统中客户端应用的关键配置。 总结 通过本文我们详细讨论了SSO的核心概念、选择了适当的身份验证协议并提供了完整的Java代码实现。实现SSO系统需要深入理解身份验证协议、使用合适的框架以及合理配置认证和资源服务器。 希望这篇博客能够为你提供深度且全面的SSO实现指南。通过这个实践你将更好地理解和应用SSO技术提升应用的用户体验和安全性。
http://www.hkea.cn/news/14434185/

相关文章:

  • 网站的开发流程如何设网站主页
  • 软件开发和网站开发wordpress自定义分类目录
  • 乐山电商网站开发如何建设企业电子商务网站
  • html网站开头怎么做广州网站网站建设
  • 北京网站建设公司如何排版淄博企业网站建设有限公司
  • 在哪里可以学做饰品网站wordpress关闭主循环
  • 郑州做网站的公司哪家新手学做网站 pdf 下载
  • 长沙建网站要多少钱怎样把网站做的好看
  • 泉州网站建设哪里优惠找不到网站后台怎么办
  • 珠海做企业网站多少钱免费开源商城系统源码
  • 好看的个人网站模板搜索关键词分析
  • 查询学校信息的网站开发小程序流程
  • 个人网站的搭建步骤网站开发证有没有用
  • 360 的网站链接怎么做专业做网站的公司
  • 织梦网站采集侠怎么做桥头镇网站建设
  • 中山网站关键字优化网站建设遇到哪些危险
  • 个人网站名称有哪些店面设计怎么样
  • 网站上的视频上传怎么做网站设计与制作合同
  • 厦门市海沧建设局网站字体设计在线生成
  • 无锡企业建站wordpress分享小图片不
  • 网站建设免费售后服务域名代备案服务
  • 国内 响应式网站邯郸市建设局网站2017
  • 网站建设规划范文郑州建设局官网
  • 精细化学品网站建设专业建设质量报告
  • 爱站网关键词查询网站的工具wordpress 栏目模板
  • 网站建设报价明细ppt做会动彩字网站
  • 网站外链建设分析网站可以做话筒台标吗
  • 网站建设与管理心得二级网站免费建
  • 电子商务网站建设管理答案成都网站制作设计公司
  • 网站开发完后期维护重要吗百度联盟广告