keycloak与istio结合demo

参考网址:https://github.com/kameshsampath/istio-keycloak-demo

部署keycloak与istio结合的demo

下载源码

git clone https://github.com/kameshsampath/istio-keycloak-demo

部署 keycloak

oc apply -f istio-keycloak-demo/openshift-files/keycloak.yaml

打开keycloak的webconsole

minishift openshift service keycloak --in-browser

部署cars api

1、编译生成car api的docker image镜像
在cars-api目录下执行命令

./mvnw -Distio.home=[your istio home folder] clean package fabric8:build

2、部署cars-api到openshift平台上

oc apply -f cars-api/src/istio/istio-cars-api-0.0.1-all.yml

配置istio认证

oc apply -f cars-api/src/istio/car-api-auth_config.yaml
oc apply -f $DEMO_HOME/cars-api/src/istio/mixer-rule-only-authorized.yaml

3、测试
没有token访问

curl -vvv $(minishift openshift service cars-api)/cars/list

token访问
生成token

---
kubectl run -i --rm --restart=Never tokenizer --image=tutum/curl \
--command \
-- curl -X POST 'http://keycloak.istio-system:8080/auth/realms/istio/protocol/openid-connect/token' \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'username={demo-user}&password={demo-user}&grant_type=password&client_id=cars-web' | jq .access_token
---

上面命令执行后会生成一串字符串,把它存入$token

curl -vvv -H "Authorization: Bearer $token" $(minishift openshift service cars-api)/cars/list

4、查询istio的配置
查询LDS和CDS

istioctl proxy-config <pod-name>

5、遇到问题

UNAUTHENTICATED:carsapi-handler.denier.myproject:You are not authorized to access the service

istio/car-api-auth_config.yaml文件中加入forward_jwt: true内容。

--- 
apiVersion: config.istio.io/v1alpha2
kind: EndUserAuthenticationPolicySpec
metadata: 
  name: cars-api-auth-policy
  namespace: myproject
spec: 
  jwts: 
    - issuer: http://keycloak.myproject:8080/auth/realms/istio
      jwks_uri: http://keycloak.myproject:8080/auth/realms/istio/protocol/openid-connect/certs
      audiences: 
      - cars-web
      forward_jwt: true
--- 
apiVersion: config.istio.io/v1alpha2
kind: EndUserAuthenticationPolicySpecBinding
metadata:
  name: cars-api-auth-policy-binding
  namespace: myproject
spec:
  policies:
    - name: cars-api-auth-policy
      namespace: myproject
  services:
    - name: cars-api
      namespace: myproject
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值