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

phpcms 怎么做网站网络营销和市场营销的区别

phpcms 怎么做网站,网络营销和市场营销的区别,基于web的企业网站管理系统设计,淘宝客网站建设文章目录 0、OAuth2服务端结构1、授权服务配置2、授权服务器 ⇒ 配置客户端详情3、授权服务器 ⇒ 管理令牌配置4、授权服务器:配置端点访问的安全约束5、资源服务器配置 相关📕: 【OAuth2授权服务器配置完整Demo】 0、OAuth2服务端结构 OAu…

文章目录

  • 0、OAuth2服务端结构
  • 1、授权服务配置
  • 2、授权服务器 ⇒ 配置客户端详情
  • 3、授权服务器 ⇒ 管理令牌配置
  • 4、授权服务器:配置端点访问的安全约束
  • 5、资源服务器配置

相关📕: 【OAuth2授权服务器配置完整Demo】

0、OAuth2服务端结构

OAuth2服务的提供端,包括两部分:

  • 授权服务:负责校验接入的客户端、登录的用户账户是否合法,以及颁发token
  • 资源服务:校验token,返回资源信息

在这里插入图片描述
比如创建两个服务,uua服务用来做授权服务,order服务用来做资源服务。

1、授权服务配置

Spring Security Oauth核心依赖:

<dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.4.1</version>
</dependency>

用 @EnableAuthorizationServer 注解并继承AuthorizationServerConfigurerAdapter来配置OAuth2.0 授权服务器。

或者直接去实现AuthorizationServerConfigurer接口都一样

@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {//略...
}

在这里插入图片描述

授权服务器中,需要配置以下三点:

  • ClientDetailsServiceConfigurer:用来配置客户端详情服务,看支持哪些客户端来请求

  • AuthorizationServerEndpointsConfigurer:解决两点:客户端来申请令牌了,申请的地址是什么(令牌端点)以及令牌怎么发放

  • AuthorizationServerSecurityConfigurer:配置令牌端点的安全约束,哪些url开放,哪些需要鉴权

2、授权服务器 ⇒ 配置客户端详情

通过ClientDetailsServiceConfigurer来配置客户端详情。而一个ClientDetails对象则是表示一个客户端的详情,包括客户端的ID、密码、授权范围、授权类型等。相关属性:

  • clientId:客户端ID
  • secret:客户端密钥
  • scope:限制客户端的访问范围
  • authorizedGrantTypes:授权类型
  • authorities:客户端可以使用的权限

配置客户端详情可以通过内存和数据库的方式:

方式一:

客户端详情ClientDetails的查询要通过ClientDetailsService,可以直接用框架的JdbcClientDetailsService。也可自己实现ClientDetailsService接口和ClientRegistrationService接口的类,用于加载和增删改客户端详情信息。然后如下设置客户端详情服务

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {clients.withClientDetails(clientDetailsService)//...

JdbcClientDetailsService相关源码:

在这里插入图片描述

方式二:

在内存中配置客户端详情服务,硬编码或者使用配置文件+@Value读取实现写活。如下:

/*** Oauth2.0客户端角色的信息来源:内存、数据库* 这里用内存做测试*/
@Override
public void configure(ClientDetailsServiceConfigurer clientDetailsServiceConfigurer) throws Exception {clientDetailsServiceConfigurer.inMemory() //使用内存.withClient("c1")  //client_id.secret(new BCryptPasswordEncoder().encode("123321"))   //客户端密钥.resourceIds("res1","res2")  //资源列表,一个标识,后面配置资源服务会用到.authorizedGrantTypes("authorization_code","password", "client_credentials", "implicit", "refresh_token")  //支持的授权模式,这里即四种都支持.scopes("all")  //允许授权的范围,一个标识.autoApprove(false)  //不自动授权,即跳转到授权页面,让用户授权.redirectUris("http://your_url");  //验证回调地址,授权码通过302重定向方法,这里要验证回调地址是否被恶意篡改//后面继续链式调用and方法可以配置第二个客户端的信息}

通过以上配置,Spring Security将会在内存中或者数据库中加载客户端详情,并在认证和授权过程中使用这些信息来验证和授权客户端的请求。

3、授权服务器 ⇒ 管理令牌配置

AuthorizationServerTokenServices接口定义了令牌操作方法:

在这里插入图片描述

其实现类是DefaultTokenServices:

在这里插入图片描述

该实现类聚合了TokenStore接口,做持久化令牌(令牌存储策略)。其实现类:

在这里插入图片描述

  • InMemoryTokenStore:令牌存内存中
  • JdbcTokenStore:令牌写进数据库
  • JwtTokenStore:JWT令牌,服务端自行解析

以下演示内存中的,先定义TokenStore:

@Configuration
public class TokenConfig {//令牌存储策略@Beanpublic TokenStore tokenStore() {//放内存return new InMemoryTokenStore();}
}

定义AuthorizationServerTokenServices,使用其实现类DefaultTokenServices,这里设置token的相关配置:

//注入上面定义的令牌存储策略的Bean
@Autowired
private TokenStore tokenStore;//注入客户端详情服务(定义下这个Bean,是实现方式:JDBC、内存、自己实现这个接口)
@Autowired
private ClientDetailsService clientDetailsService;//token令牌管理
@Bean
public AuthorizationServerTokenServices tokenServices() {DefaultTokenServices tokenServices = new DefaultTokenServices();tokenServices.setClientDetailsService(clientDetailsService);   //客户端信息服务,即向哪个客户端颁发令牌tokenServices.setSupportRefreshToken(true);  //支持产生刷新令牌tokenServices.setTokenStore(tokenStore);   //令牌的存储策略tokenServices.setAccessTokenValiditySeconds(7200);    //令牌默认有效期2小时tokenServices.setRefreshTokenValiditySeconds(259200);  //refresh_token默认有效期三天return tokenServices;
}

定义好这令牌存储和令牌配置的两个Bean,下面重写第二个configure方法:

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {//你的逻辑
}

这个方法AuthorizationServerEndpointsConfigurer类型的形参,可以配置授权服务器支持的授权类型

  • authenticationManager:配置认证管理器,以支持密码模式
  • userDetailsService:配置这个说明有自己的UserDetailsService接口实现,此后refresh_token获取新令牌,框架会去检查当前账户是否有效(如是否被禁用)
  • authorizationCodeServices:配置授权码服务,以支持授权码模式
  • implicitGrantService:隐式授权模式需要
  • tokenGranter:配置这个,说明要自定义授权逻辑

示例:

/*** 授权信息保存策略*/
@Bean
public ApprovalStore approvalStore(){return new InMemoryApprovalStore();
}//AuthenticationManager对象在Oauth2认证服务中要使用,提取放到IOC容器中,实现WebSecurityConfigurerAdapter的安全配置类中配置
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {return super.authenticationManagerBean();
}//设置授权码模式下,授权码如何存储
@Bean(name = "jdbcAuthorizationCodeServices")
public AuthorizationCodeServices authorizationCodeServices(){return new InMemoryAuthorizationCodeServices();
}/*** 令牌端点访问和令牌服务(令牌怎么生成、怎么存储等)*/
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {endpoints.authenticationManager(authenticationManager)  //设置认证管理器,密码模式需要.authorizationCodeServices(authorizationCodeServices)  //授权码模式需要.approvalStore(approvalStore).tokenServices(tokenServices())  //token管理服务.allowedTokenEndpointRequestMethods(HttpMethod.POST);  //允许Post方式访问
}

最后,配置授权端点的URL,框架默认URL为:

/oauth/authorize:授权端点/oauth/token:令牌端点/oauth/confirm_access:用户确认授权提交端点/oauth/error:授权服务错误信息端点/oauth/check_token:用于资源服务访问的令牌解析端点/oauth/token_key:提供公有密匙的端点,如果你使用JWT令牌的话

AuthorizationServerEndpointsConfigurer的pathMapping方法可以把这些默认的URL替换成自己定义的URL,形参1为默认链接,形参2为新的自定义的URL链接

4、授权服务器:配置端点访问的安全约束

在这里配置框架提供的端点(url),哪些是可以对外公开的,比如下面即check/token接口对外公开

/*** token令牌端点访问的安全策略* (不是所有人都可以来访问框架提供的这些令牌端点的)*/
@Override
public void configure(AuthorizationServerSecurityConfigurer authorizationServerSecurityConfigurer) throws Exception {authorizationServerSecurityConfigurer.tokenKeyAccess("permitAll()")   //oauth/token_key这个端点(url)是公开的,不用登录可调.checkTokenAccess("permitAll()")   // oauth/check_token这个端点是公开的.allowFormAuthenticationForClients();  //允许客户端表单认证,申请令牌
}

5、资源服务器配置

Spring Security Oauth核心依赖:

<dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.4.1</version>
</dependency>

在资源服务做token校验,合法且权限匹配,则返回数据资源。配置方式:

用 @EnableResourceServer注解并继承 ResourceServerConfigurerAdapter(或实现ResourceServerConfigurer)来配置OAuth2.0 授权服务器。

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(securedEnabled = true)
public class OAuthSourceConfig extends ResourceServerConfigurerAdapter {public static final String RESOURCE_ID = "res1";@ResourceResourceServerTokenServices resourceServerTokenServices;@Beanpublic TokenStore tokenStore() {//放内存return new InMemoryTokenStore();}@Overridepublic void configure(ResourceServerSecurityConfigurer resources) throws Exception {resources.resourceId(RESOURCE_ID)   //资源id.tokenStore(tokenStore())   //告诉资源服务token在库里.tokenServices(resourceServerTokenServices).stateless(true);}@Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests()//这就是给客户端发token时的scope,这里会校验scope标识.antMatchers("/**").access("#oauth2.hasAnyScope('all')").and().csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);}
}

通过ResourceServerSecurityConfigurer对象配置:

  • resourceId:资源ID,对应授权服务器里的资源ID标识
  • tokenServices:ResourceServerTokenServices 类的实例
  • tokenStore:指定令牌在哪儿,如何访问

关于ResourceServerTokenServices,其用来验证token。如何授权服务和资源服务在一个应用上,可用DefaultTokenServices,使用/oauth/check_token这个端点去校验令牌。反之需要使用远程token服务RemoteTokenServices,指定授权服务器校验token的地址。以及自己的密钥和客户端ID:

@Configuration
public class BeanConfig {@Beanpublic ResourceServerTokenServices tokenServices() {RemoteTokenServices services = new RemoteTokenServices();services.setCheckTokenEndpointUrl("http://localhost:9009/oauth/check_token");services.setClientId("c1");services.setClientSecret("123");return services;}
}

文章转载自:
http://dinncosmuggler.knnc.cn
http://dinncoculm.knnc.cn
http://dinncovituperation.knnc.cn
http://dinncoaesir.knnc.cn
http://dinncoerbium.knnc.cn
http://dinncospinout.knnc.cn
http://dinncomimetic.knnc.cn
http://dinncomilitarism.knnc.cn
http://dinncoskirmisher.knnc.cn
http://dinncoeloign.knnc.cn
http://dinncoskiagraph.knnc.cn
http://dinncocogency.knnc.cn
http://dinncoconglobate.knnc.cn
http://dinncodisturb.knnc.cn
http://dinncotwosome.knnc.cn
http://dinncorebel.knnc.cn
http://dinncoinfrasound.knnc.cn
http://dinncomaster.knnc.cn
http://dinncotelstar.knnc.cn
http://dinncowhipster.knnc.cn
http://dinncoprothetelic.knnc.cn
http://dinncowilliewaught.knnc.cn
http://dinncocantonment.knnc.cn
http://dinncospearman.knnc.cn
http://dinncotwist.knnc.cn
http://dinncofastfood.knnc.cn
http://dinncocallous.knnc.cn
http://dinncodossy.knnc.cn
http://dinncogang.knnc.cn
http://dinncohydroaraphy.knnc.cn
http://dinncograting.knnc.cn
http://dinncoaccouplement.knnc.cn
http://dinncocyanoacrylate.knnc.cn
http://dinncoconvenance.knnc.cn
http://dinncomithridatism.knnc.cn
http://dinncobribee.knnc.cn
http://dinncodiredawa.knnc.cn
http://dinncodownmost.knnc.cn
http://dinncosuited.knnc.cn
http://dinncosubordinacy.knnc.cn
http://dinncochirogymnast.knnc.cn
http://dinncosargodha.knnc.cn
http://dinncomaterials.knnc.cn
http://dinncowreckful.knnc.cn
http://dinncosynopsize.knnc.cn
http://dinncoconstriction.knnc.cn
http://dinncobosquet.knnc.cn
http://dinncodentigerous.knnc.cn
http://dinncocabomba.knnc.cn
http://dinncobang.knnc.cn
http://dinncocrankle.knnc.cn
http://dinncocircumocular.knnc.cn
http://dinncoturncoat.knnc.cn
http://dinncocourtside.knnc.cn
http://dinncoslovene.knnc.cn
http://dinncocalcifuge.knnc.cn
http://dinncogoo.knnc.cn
http://dinncosoutheastwards.knnc.cn
http://dinncomdcccxcix.knnc.cn
http://dinncotier.knnc.cn
http://dinncoreconnoitre.knnc.cn
http://dinncomingy.knnc.cn
http://dinncospacial.knnc.cn
http://dinncocommunication.knnc.cn
http://dinncoinappetent.knnc.cn
http://dinncomishear.knnc.cn
http://dinncoshortfall.knnc.cn
http://dinnconeocene.knnc.cn
http://dinncoglaciation.knnc.cn
http://dinncovulvae.knnc.cn
http://dinncobearward.knnc.cn
http://dinncometrician.knnc.cn
http://dinncoimmobilism.knnc.cn
http://dinncoemblazon.knnc.cn
http://dinncocoax.knnc.cn
http://dinncostatehouse.knnc.cn
http://dinncopellucid.knnc.cn
http://dinncopodalgia.knnc.cn
http://dinncostartled.knnc.cn
http://dinncobanjo.knnc.cn
http://dinncosulfane.knnc.cn
http://dinncoaerofoil.knnc.cn
http://dinncoadulate.knnc.cn
http://dinncopinny.knnc.cn
http://dinncoanimadversion.knnc.cn
http://dinncokarnaphuli.knnc.cn
http://dinncochalcogenide.knnc.cn
http://dinncostrained.knnc.cn
http://dinncodrossy.knnc.cn
http://dinncomonorchid.knnc.cn
http://dinncocoly.knnc.cn
http://dinncobarye.knnc.cn
http://dinncoandantino.knnc.cn
http://dinncophenylamine.knnc.cn
http://dinncorowland.knnc.cn
http://dinncotrijet.knnc.cn
http://dinncoseminole.knnc.cn
http://dinncopelops.knnc.cn
http://dinncoliwa.knnc.cn
http://dinncoelision.knnc.cn
http://www.dinnco.com/news/101823.html

相关文章:

  • 江苏建设信息官网网站seo零基础培训
  • 太原在线网站建设seo托管服务
  • 做终端客户网站如何让产品吸引顾客
  • 郑州网站制作专业乐云seo个人网站制作模板主页
  • 长春做网站公司哪家好搭建网站步骤
  • 珠海的门户网站有哪些军事新闻今日最新消息
  • wordpress防伪查询主题网站人多怎么优化
  • 推荐一个代做毕业设计的网站汕头网站建设公司
  • 郑州快速建站模板seo 工具推荐
  • 佛山网站建站谷歌三件套
  • c2c电子商务的网站自媒体运营
  • 著名营销成功案例网站搜索引擎优化报告
  • 自己优化网站新东方教育培训机构
  • 护士延续注册网站福州seo管理
  • 网站设计制作从哪里学起身边的网络营销案例
  • 做设计的软件百度怎么优化关键词排名
  • 佛山做外贸网站哪家好网站优化排名公司
  • 郑州市二七区建设局 网站网站怎么找
  • 什么内容能提高网站流量新浪舆情通
  • 杭州倍世康 做网站免费招收手游代理
  • 单位网站建设有机房吗网站推广方案有哪些
  • 佛山网站专业制作seo方法培训
  • 班级网站建设网站测试浙江搜索引擎优化
  • 湖州民生建设有限公司网站营销型网站建设目标
  • 鄂尔多斯网站制作网络营销和传统营销的区别
  • 企业网站的形式疫情最新消息今天公布
  • web网站开发使用语言搜索引擎排行榜
  • 私活接单平台搜索引擎优化seo怎么做
  • 苏州个人网站建设qq群推广平台
  • 微积壹佰 网站建设线上营销有哪些