春のクラウドセキュリティサービスの戦闘_4-8_マイクロゲートウェイセキュリティ_01

これまでのところ(下図のように)プロセスがのOAuth2ベースの認証と承認、順序、または単一ノードを達成してきた、それはまだ微小環境サービスの中に入っていません。

 

 以下に示すように、実際のシナリオでは、サービス注文サービスと同様、数十があってもよい、各サービスがクラスタであるノードの数十があり、

 

 

このシナリオでは、マイクロサービスアーキテクチャの現在の問題:

質問1:セキュリティ処理とビジネスロジックのカップリングは、変更の複雑さとコストを増大させます

 (以下に示すように)以前のアーキテクチャ、サービスの注文、しかし、それはまた、リソースサーバであり、サービスの注文がトークンを検証する認証サーバのアドレスを知っている必要があり、ユーザ情報がトークンに変換されます。すなわち、安全関連コードのコードであり、ビジネスの部分に結合します。これらのサーバ資源関連するコード手数料ジャーパッケージ、認証設定に関連するコードが行われているが、その後、各サービスは、JARパッケージに依存しますが、本質は変わっていない、およびセキュリティ関連のコードやビジネスコード。マイクロサービス環境では、デカップリングの値は、デカップリング用の他の必須のメイク方法、最大です。このようなカップリングは、あなたがセキュリティ関連のコードを変更した場合、その後のjarパッケージを確保依存サービスは、jarファイルのパッケージをアップグレードする必要があり、ビジネスコードの場合にあるため、安全性の変更されていないと設定を変更し、再デプロイ、これは最初の行のインターネット企業であれば、何百、何千、数十マイクロの下でサービス環境の何千ものがありますが、影響は非常に大きく、これは容認できません。

 質問2:サービスノードの増加に伴い、認証サーバ圧が上昇

 マイクロサービスの前に、ビジネスシーン10として、このサービスは、20および50マイクロサービスに分割することができるような大規模な店舗のプロモーションとして、いくつかのシナリオで、一部のサービスは、スケーラブルな容量、重要なビジネスを行いますノードを展開すると、認証サーバは接続認証サーバの最大数、認証サーバを超え、多くのサービスので、しかし、サービスノードの増加に伴って、オリジナルを強化することができるかもしれ前に、トークン体験しなければならない認証サーバにこれらの微小なサービスを倍増します接続が認証サーバにつながることは利用できない、満たされている、すべての依存サービスが利用できない認証サーバは、これらのサービスが出て崩壊につながるされており、これは大きなリスクです。

質問3:マイクロサービスへの複数同時露光、外部からのアクセスの複雑さを増します

様々なサービスを直接クライアントとの契約、クライアントアクセスの複雑さを増します

 

ゲートウェイを追加します。

 彼はトップ3つの問題は、ゲートウェイを添加した後に解決することができます言いました:

1,解决安全处理和业务逻辑耦合:获取令牌、校验令牌等,所有跟安全相关的逻辑,都放在了网关上处理,一旦请求过了,订单服务里只有顶单相关的业务逻辑。

2,解决随着业务节点增加,认证服务器压力增大:顶单等服务,跟认证服务器没有任何交互,不管各个微服务怎么扩,认证服务器是不受影响的。虽然网管也会扩,但是网关扩缩容的频率和幅度,都远不及各个服务。微服务可能是10到20,20到40的扩容,但是网关可能是2个变4个,4个变8个。网关的扩容幅度和频率,远远小于微服务,再怎么扩,网关的数量是远远小于微服务的。

3,解决外部访问的复杂性:所有的请求都只和网关打交道,客户端应用只知道一个网关的地址,由网关转发到各个微服务。

 搭建Zuul网关

新建项目:nb-server-gateway

 

 

 pom加入zuul依赖:

<!-- 网飞的zuul网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

网关端口:9070
yml网关配置

 

 这样配置了之后,访问 http://localhost:9070/token/aaa/bbb ,会被转发到 http://localhost:9090/aaa/bbb

        访问  http://localhost:9070/token/ccc/ddd ,会被转发到 http://localhost:9060/ccc/ddd

 

启动类加上 @EnableZuulProxy 注解
分别启动三个服务:

 

 


现在,客户端访问网关, http://localhost:9070/token/oauth/token ,会被转发到认证服务器(端口9090)的 http://localhost:9090/oauth/token ,来获取令牌,postman实验:

 可以成功获取token,说明zuul网关已经帮你把请求转发到了认证服务器9090 。

拿token 访问网关 创建顶单:http://localhost:9070/order/orders 

 

 

 创建成功,说明网关已经将请求转发到了顶单服务。

 网关已经初步搭建好了,但是只解决了问题3,客户端访问的复杂性,下面解决两外两个问题。

代码github:https://github.com/lhy1234/springcloud-security/tree/chapt-4-8-gateway01

おすすめ

転載: www.cnblogs.com/lihaoyang/p/12104738.html