我在将 SSL 证书添加到在 docker 上运行的 Keycloak 时遇到问题。我通过负载均衡器从 AWS EC2 获得了 SSL 证书,但不知道如何将其添加到 docker 上的 Keycloak 中。我正在搜索谷歌,但尚未找到任何结果。
另外,当我访问https://stackoverflow.com之类的页面时,ssl 工作正常。但是当我尝试打开https://stackoverflow.com:8443(因为 8443 是 Keycloak 的端口)时,它不起作用。
Keycloak的Dockerfile代码如下:
FROM jboss/keycloak:4.6.0.Final
WORKDIR /opt/jboss/keycloak
COPY realm-export.json /opt/jboss/keycloak/
EXPOSE 8443
ENTRYPOINT [ "/opt/jboss/tools/docker-entrypoint.sh" ]
CMD ["-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Dkeycloak.import=realm-export.json -Dkeycloak.migration.strategy=OVERWRITE_EXISTING"]
Run Code Online (Sandbox Code Playgroud)
这是 docker-compose.yml 文件:
version: '2'
services:
keycloak:
build: "./Keycloak + actibook-app client import"
depends_on:
- keycloak-postgres
environment:
- KEYCLOAK_USER=${KEYCLOAK_USER}
- KEYCLOAK_PASSWORD=${KEYCLOAK_PASSWORD}
- KEYCLOAK_IMPORT=${KEYCLOAK_IMPORT}
- POSTGRES_USER=${KEYCLOAK_DATABASE_USER}
- POSTGRES_PASSWORD=${KEYCLOAK_DATABASE_PASSW}
- POSTGRES_PORT_5432_TCP_ADDR= keycloak-postgres
ports:
- "8443:8443" …
Run Code Online (Sandbox Code Playgroud) 我有一个使用 .NET Core API、Keycloak 和 JWT 令牌制作的应用程序。
到目前为止,我一直在使用旧版本的 Keycloak,当它创建 JWT 令牌时,它在有效负载上写下了角色:
{
"user_roles": [
"offline_access",
"uma_authorization",
"admin",
"create-realm"
]
}
Run Code Online (Sandbox Code Playgroud)
但是现在在我更新它之后,它在有效载荷上写了这里的角色:
{
"realm_access": {
"roles": [
"create-realm",
"teacher",
"offline_access",
"admin",
"uma_authorization"
]
},
}
Run Code Online (Sandbox Code Playgroud)
而且我需要知道如何将这个旧代码更改为新代码,告诉它不要看user_roles
,但要看realm_access
然后到roles
。
public void AddAuthorization(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("Administrator", policy => policy.RequireClaim("user_roles", "admin"));
options.AddPolicy("Teacher", policy => policy.RequireClaim("user_roles", "teacher"));
options.AddPolicy("Pupil", policy => policy.RequireClaim("user_roles", "pupil"));
options.AddPolicy(
"AdminOrTeacher",
policyBuilder => policyBuilder.RequireAssertion(
context => context.User.HasClaim(claim =>
claim.Type == "user_roles" && (claim.Value == "admin" …
Run Code Online (Sandbox Code Playgroud) 我创建了一个ReactJs应用和如何只在访问domain.com/应用。
我把这个加到 index.js
<BrowserRouter basename='/app/'>
<App />
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
现在,当我在页面之间导航时,它可以/app/
正常工作(它添加正确),例如。domain.com/app/about
.
但是该应用程序仍然可以在没有/app
, 例如的情况下访问。当我输入时domain.com/about
仍然显示关于页面。
虽然我希望它只能通过 访问/app/
,而不是没有它。
keycloak ×2
asp.net-core ×1
c# ×1
certificate ×1
docker ×1
jwt ×1
react-router ×1
reactjs ×1
ssl ×1