下午你们都
只是想找人来仔细检查我的工作.以下是保护微服务的有效方法吗?
将我们的单片应用程序和单一的Partner API分解为面向特定业务功能的微服务.它们很可能是在docker容器中运行的小型expressjs应用程序,在弹性beanstalk上,谁知道.他们会住在某个地方:)
我正在研究将Kong作为我的API网关或使用AWS API Gateway来封装我的微服务的细节.而且,它感觉很好.
Kong 的JWT插件将验证JWT的签名,然后将customer_id
标题中的一行传递给微服务.我还要提一下,我们的第三方开发人员也将参与集成乐趣.这是我看到的事情的基本草图:
Kong有一个很好的访问控制插件.我们的应用程序和移动应用程序将以"上帝"权限运行,但我绝对可以将开发人员锁定到特定的路由和方法.
撤销第三方访问将很容易,撤销最终用户访问将不会那么简单,除非我愿意通过生成新秘密立即使所有JWT无效.也许我可以限制令牌时间为10分钟左右,使我们的应用程序会检查他们是否过期,得到一个新的令牌,然后与原始请求得到.这样我就可以在数据库或其他东西中"标记"它们,而不是让JWT生成.
在任何地方都使用SSL,JWT存储在Web浏览器中仅限SSL的cookie中,并且在任何声明中都没有存储敏感信息.
多谢你们.
我一直在开发微服务(Spring Cloud)一段时间(〜2年)并且大量使用Netflix Zuul.虽然它提供了许多功能和强大功能,但我的开发人员仍然想知道替代方案,并了解了Tyk和Kong.
从个人文档和博客中读取,我或多或少地了解它们都提供了类似的功能.我想知道两者之间的全面比较,以及您实施的任何实际示例都将是一个很好的帮助理解.
所以我有一个问题,让keycloak 3.2.1在kong(0.10.3)后面工作,这是一个基于nginx的反向代理.
场景是:
我通过我的网关路由来呼叫keycloak https://{gateway}/auth
,它向我显示带有keycloak徽标的入口点,链接到管理控制台等 - 到目前为止一切都很好.
但是当点击管理控制台 - >调用时https://{gateway}/auth/admin/master/console/
,keycloak尝试通过http加载其css/js(参见下面的screenie),我的浏览器因为混合内容而阻止了.
我四处搜索并找到了这个帖子:keycloak apache服务器配置带有'混合内容'问题导致这个github repo:https://github.com/dukecon/keycloak_postgres_https
从那时起,我尝试将其cli成功集成到我的dockerfile中(没有更改文件的内容,只是将它们复制到我的repo中并从dockerfile添加/运行它们).这是我的dockerfile现在:
FROM jboss/keycloak-postgres:3.2.1.Final
USER root
ADD config.sh /tmp/
ADD batch.cli /tmp/
RUN bash /tmp/config.sh
#Give correct permissions when used in an OpenShift environment.
RUN chown -R jboss:0 $JBOSS_HOME/standalone && \
chmod -R g+rw $JBOSS_HOME/standalone
USER jboss
EXPOSE 8080
Run Code Online (Sandbox Code Playgroud)
所以我现在没有想法,希望你能帮助我:
如何告诉keycloak在这里通过https调用'css-files?
我是否需要更改cli脚本中的内容?
这是脚本的内容:
config.sh:
#!/bin/bash -x
set -e
JBOSS_HOME=/opt/jboss/keycloak
JBOSS_CLI=$JBOSS_HOME/bin/jboss-cli.sh
JBOSS_MODE=${1:-"standalone"}
JBOSS_CONFIG=${2:-"$JBOSS_MODE.xml"}
echo "==> Executing..."
cd /tmp
$JBOSS_CLI --file=`dirname …
Run Code Online (Sandbox Code Playgroud) Zuul和kong都是微服务架构中的一个很好的API网关层.这两者之间有什么重要的区别?
编辑:
答案很清楚。--user root
进入容器时可以使用旗帜。
docker exec -it --user root mycontainername bash or sh
Run Code Online (Sandbox Code Playgroud)
我刚刚为服务(Kong API 网关)下载了这个官方 docker hub 的 1.5.0-alpine 映像,现在我无法运行 apk 命令来安装 nano,例如。
之前,我只需要进入容器
docker exec -it kong sh
Run Code Online (Sandbox Code Playgroud)
或者
docker-compose exec kong sh
Run Code Online (Sandbox Code Playgroud)
并且我能够运行诸如apk update
或 之类的命令apk add nano
。
但现在我收到这些错误
$ apk update
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk database: Permission denied
$ apk add nano
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk …
Run Code Online (Sandbox Code Playgroud) 当我尝试使用公共IP访问时收到错误消息:
"{"message":"failure to get a peer from the ring-balancer"}"
Run Code Online (Sandbox Code Playgroud)
看来Kong无法提供上游服务。
我正在使用投票应用程序
入口.yaml
"{"message":"failure to get a peer from the ring-balancer"}"
Run Code Online (Sandbox Code Playgroud)
服务.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: telehealth-ingress
namespace: kong
annotations:
kubernetes.io/ingress.class: "kong"
spec:
rules:
- http:
paths:
- backend:
serviceName: voting-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
部署.yaml
apiVersion: v1
kind: Service
metadata:
name: voting-service
labels:
name: voting-service
app: voting-app
spec:
ports:
- targetPort: 80
port: 80
selector:
name: voting-app-pod
app: voting-app
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Kong API Gateway,我想用它来验证网关用户的身份验证,并在用户未正确登录时限制对服务的访问.我有一个身份验证服务,只要用户登录就会发出JWT.
我现在想与Kong分享JWT秘密并将其用于验证已发布的JWT以保护需要适当身份验证的服务.
我看了一下这个插件:https://getkong.org/plugins/jwt/
但似乎这个插件的工作方式与我想要实现的有点不同.为什么我要创建消费者?我希望在我的身份验证服务中只有一个用户数据库,以避免需要同步.看来这个插件的方法是为了让第三方利益相关者访问我的API.
任何提示都将受到高度赞赏.
当我尝试在 Ubuntu 中启动 Kong 时出现以下错误
kong start [-c /path/to/kong.conf]
prefix directory /usr/local/kong not found, trying to create it
2017/11/05 21:11:41 [warn] ulimit is currently set to "1024". For better performance set it to at least "4096" using "ulimit -n"
Error: /usr/local/share/lua/5.1/pgmoon/init.lua:271: missing password, required for connect
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我有一个 KONG 容器正在运行,我想向其中添加一个自定义插件,特别是JWT Crafter。我已经下载了插件,但我不知道如何让它从我的 KONG 容器开始。所以请如果有人进入相同的位置或知道任何可遵循的路线,这将非常有帮助。
我正在尝试通过 kong.yml 文件以声明方式使用 Kong。我希望能够在 kong.yml 文件中使用环境变量。我的 docker-compose 中有以下内容:
kong:
image: kong:2.7.0-alpine
restart: "always"
hostname: kong
container_name: kong
networks:
- kong-net
environment:
KONG_DATABASE: "off"
KONG_PROXY_ACCESS_LOG: /dev/stdout
KONG_PROXY_ERROR_LOG: /dev/stderr
KONG_ADMIN_ACCESS_LOG: /dev/stdout
KONG_ADMIN_ERROR_LOG: /dev/stderr
KONG_ADMIN_LISTEN: "0.0.0.0:8001, 0.0.0.0:8444 ssl"
KONG_DECLARATIVE_CONFIG: "/opt/kong/kong.yml"
ADMIN_MICROSERVICE_PORT: ${ADMIN_MICROSERVICE_PORT}
REPORTING_MICROSERVICE_PORT: ${REPORTING_MICROSERVICE_PORT}
INTERNAL_IP: ${INTERNAL_IP}
command: "kong start --v"
ports:
- "${INTERNAL_IP}:8000:8000"
- "${INTERNAL_IP}:8443:8443"
- "${INTERNAL_IP}:8001:8001"
- "${INTERNAL_IP}:8444:8444"
volumes:
- ./kong/config:/opt/kong
Run Code Online (Sandbox Code Playgroud)
还有一个 kong.yml 文件:
_format_version: "2.1"
_transform: true
services:
- name: controllers
url: https://${INTERNAL_IP}:${ADMIN_MICROSERVICE_PORT}
routes:
- name: controller-routes
paths:
- /admin/controllers
- …
Run Code Online (Sandbox Code Playgroud) kong ×10
docker ×3
api-gateway ×2
jwt ×2
api ×1
dockerfile ×1
https ×1
keycloak ×1
kong-ingress ×1
kubernetes ×1
mashape ×1
netflix-zuul ×1
openshift ×1
security ×1
ssl ×1
tyk ×1
ubuntu ×1