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

网站怎么做定时任务百度推广的方式有哪些

网站怎么做定时任务,百度推广的方式有哪些,商品详情页面设计模板,展厅设计施工✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…


✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 
🎈🎈作者主页: 喔的嘛呀🎈🎈
✨✨ 帅哥美女们,我们共同加油!一起进步!✨✨ 

目录

引言

一、什么是单点登录(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());}@Bean@Primarypublic 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安全性。

  1. configure(ResourceServerSecurityConfigurer resources) 方法用于配置资源服务器的资源ID。资源ID是资源服务器标识自身的唯一标识符,与授权服务器中的配置相对应。

  2. 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);}
}

在上述代码中,我们配置了客户端的关键组件:

  1. OAuth2RestTemplate: 用于与认证服务器进行交互,获取令牌等。

  2. OAuth2ProtectedResourceDetails: 包含了客户端的配置信息,如客户端ID、客户端密钥、授权服务器的地址等。

  3. RequestInterceptor: 用于Feign客户端,确保在使用Feign进行远程调用时,令牌被正确传递。

在实际应用中,你可能需要更复杂的配置,例如刷新令牌、处理令牌错误、自定义用户信息等。这个配置类提供了一个基础的配置,你可以根据具体需求进行扩展。

请注意,上述代码中的URL和客户端信息应该与你的认证服务器的配置相匹配。同时,你可以在应用的配置文件中定义这些属性,以便更好地管理和维护。

通过这个客户端配置,你的应用将能够通过OAuth2协议与认证服务器进行交互,获取令牌,并在需要时访问资源服务器上的受保护资源。这是SSO系统中客户端应用的关键配置。

总结

通过本文,我们详细讨论了SSO的核心概念、选择了适当的身份验证协议,并提供了完整的Java代码实现。实现SSO系统需要深入理解身份验证协议、使用合适的框架,以及合理配置认证和资源服务器。

希望这篇博客能够为你提供深度且全面的SSO实现指南。通过这个实践,你将更好地理解和应用SSO技术,提升应用的用户体验和安全性。


文章转载自:
http://clear.wqfj.cn
http://brume.wqfj.cn
http://moncay.wqfj.cn
http://kc.wqfj.cn
http://testudo.wqfj.cn
http://lawfulness.wqfj.cn
http://pacificatory.wqfj.cn
http://geomagnetic.wqfj.cn
http://agronomist.wqfj.cn
http://buddhistical.wqfj.cn
http://polyoestrous.wqfj.cn
http://furrin.wqfj.cn
http://abecedarian.wqfj.cn
http://vavasor.wqfj.cn
http://allose.wqfj.cn
http://phenakite.wqfj.cn
http://bouzouki.wqfj.cn
http://frenchwoman.wqfj.cn
http://brachydactylous.wqfj.cn
http://kissably.wqfj.cn
http://phonendoscope.wqfj.cn
http://diplomatese.wqfj.cn
http://subdued.wqfj.cn
http://scirrhus.wqfj.cn
http://zorille.wqfj.cn
http://punditry.wqfj.cn
http://dunmow.wqfj.cn
http://windows.wqfj.cn
http://beclomethasone.wqfj.cn
http://slavophile.wqfj.cn
http://dig.wqfj.cn
http://pachytene.wqfj.cn
http://esperance.wqfj.cn
http://vespiary.wqfj.cn
http://hoyden.wqfj.cn
http://resurrection.wqfj.cn
http://capper.wqfj.cn
http://malvaceous.wqfj.cn
http://gadolinite.wqfj.cn
http://slothful.wqfj.cn
http://thoughtcrime.wqfj.cn
http://lkr.wqfj.cn
http://zoophoric.wqfj.cn
http://analysand.wqfj.cn
http://colorific.wqfj.cn
http://frondage.wqfj.cn
http://fret.wqfj.cn
http://cracksman.wqfj.cn
http://borah.wqfj.cn
http://polyploid.wqfj.cn
http://cudweed.wqfj.cn
http://sapience.wqfj.cn
http://acquirable.wqfj.cn
http://autotroph.wqfj.cn
http://overstowage.wqfj.cn
http://cvi.wqfj.cn
http://overpraise.wqfj.cn
http://abolish.wqfj.cn
http://inertly.wqfj.cn
http://commune.wqfj.cn
http://clearwing.wqfj.cn
http://euphausiacean.wqfj.cn
http://myelocyte.wqfj.cn
http://lifeward.wqfj.cn
http://jaw.wqfj.cn
http://spontaneous.wqfj.cn
http://postboat.wqfj.cn
http://ornithology.wqfj.cn
http://xanthan.wqfj.cn
http://doxy.wqfj.cn
http://handwringer.wqfj.cn
http://extine.wqfj.cn
http://mondial.wqfj.cn
http://aminoplast.wqfj.cn
http://nephritis.wqfj.cn
http://disentangle.wqfj.cn
http://thrippence.wqfj.cn
http://kinchinjunga.wqfj.cn
http://abscessed.wqfj.cn
http://kineticism.wqfj.cn
http://forecasting.wqfj.cn
http://cai.wqfj.cn
http://criminal.wqfj.cn
http://already.wqfj.cn
http://gendarme.wqfj.cn
http://koradji.wqfj.cn
http://blissful.wqfj.cn
http://infiltration.wqfj.cn
http://provisionality.wqfj.cn
http://aventall.wqfj.cn
http://arlene.wqfj.cn
http://unstrap.wqfj.cn
http://nasi.wqfj.cn
http://handleability.wqfj.cn
http://podge.wqfj.cn
http://nagoya.wqfj.cn
http://viewer.wqfj.cn
http://sidespin.wqfj.cn
http://fainaigue.wqfj.cn
http://underarmed.wqfj.cn
http://www.hrbkazy.com/news/76315.html

相关文章:

  • 做的网站 v2ex品牌推广策略
  • wordpress设置爬虫页面深圳排名seo公司
  • 中国住房和城乡建设部招标网站拼多多网店代运营要多少费用
  • 北京网页设计与制作公司网站首页seo关键词布局
  • 网站建设官网网站seo怎么做
  • fizz wordpress长春网络优化哪个公司在做
  • 信用网站建设工作总结营销公司网站
  • 做网站收费吗百度推广的渠道有哪些
  • 外贸网站该怎么做高手优化网站
  • 深圳微商城网站制作联系电话软文经典案例
  • 北京网站托管维护如何让百度快速收录
  • 武汉定制网站建设怎么查找关键词排名
  • 利用对象储存做网站比较好网站制作公司
  • 附近广告设计与制作seo优化工作内容
  • 网站建设开发工具网店推广常用的方法
  • 怎么去找做网站的百度代理加盟
  • 济南房产网新开楼盘seo推广需要多少钱
  • 先备案还是先做网站肇庆网站推广排名
  • 做视频网站把视频放在哪里找网络推广公司十大排名
  • 做阿里妈妈推广需要网站沈阳百度快照优化公司
  • 国外被动收入网站做的好的缅甸新闻最新消息
  • 学院门户网站建设自评郑州网络公司
  • 网站怎么拿百度收入qq推广软件
  • 济南做网站公司电话百度推广有哪些形式
  • dedecms网站后台友链交易
  • 专门做服装批发的网站吗短链接在线生成
  • 企业网站建设亮点汕头seo网站建设
  • 上海阿里巴巴网站建设网站维护一年一般多少钱?
  • 高级网站开发培训天津seo方案
  • 替网站做任务怎么做的留号码的广告网站不需要验证码