ServiceComb EdgeService可以配合oauth2 使用吗

edge service  可以配合oauth2 使用吗,现在看来,oauth2的oauth/token 接口,无法生成契约所以,访问不到,这个请教一下怎么解决?

这个问题稍微有些复杂,至少 有两个过程需要解决:
1. edge转发调往oauth2 server的请求。由于oauth2 server可能是采用第三方技术,比如spring cloud开发的,这些服务不会生成契约,所有edge service的默认路由转发(DefaultDispatcher)没法工作。这个需要专门针对oauth2 server做一个转发器。
2. edge拦截调往其他服务的请求,做token检查。 我没有详细了解过使用oauth2的认证过程,这块不好解答,如果是完全无状态的token,这块只需要在edge handler检查下token有效性。感觉不复杂。
解决第一个问题: https://github.com/huaweicse/cse-java-chassis-samples/blob/master/HouseAppWithSpringBoot2/edge-service/src/main/java/com/huawei/cse/houseapp/edge/WebPageDispatcher.java  这里有个例子,是一个通用的http转发器,可以将请求转发给任意提供HTTP端口的服务。

针对第一个问题,这里还有个例子比上面例子的功能稍微完善一些,实现了负载均衡、实例隔离等功能。可以参考:

1

2

https://github.com/huaweicse/cse-java-chassis-samples/blob/7de5db

bcfae46865966140eecdb3dad43c85f2b4/porter/gateway-service/src/main/java/com/huawei/cse/porter/gateway/UiDispatcher.java

针对第二个问题,如果edge在认证的时候,还需要调用oauth2 server的接口,那么可以采用第三方接口访问的方式调用,或者自己写个http client调用,也是我刚刚发的代码,vert.x httpclient能够很好支持异步,比较适合edge逻辑,如果采用spring或者apache http client,则异步代码不好写。 servicecomb原生接口(RCP)访问第三方服务参考,比较类似feign的用法:https://docs.servicecomb.io/java-chassis/zh_CN/build-consumer/3rd-party-service-invoke.html  当然这个步骤可能是不需要的,取决于oauth2的流程。

你可能感兴趣的:(技术剖析)