小编fer*_*sta的帖子

通过docker-compose重新使用容器

我有一个在定义的多个Docker容器上运行的应用程序docker-compose。我的用户一切正常,docker-compose ps输出如下所示:

       Name                Command           State     Ports
------------------------------------------------------------
myuser_app_1    /config/bootstrap.sh   Exit 137
myuser_data_1   sh                     Exit 0
myuser_db_1     /run.sh                Exit 143
Run Code Online (Sandbox Code Playgroud)

现在,我试图运行docker-compose upsupervisord(见相关部分supervisord.conf以下),问题是,容器现在命名myapp_app_1myapp_data_1并且myapp_db_1,这是他们创造了从无到有,并在原容器的所有自定义都将丢失。

我尝试重命名容器,但它给出了一个错误,指出已经有一个使用该名称的容器。

问:有什么方法可以强制docker-compose重用现有容器,而不是根据各自的映像创建新容器?

主管

...
[program:myapp]
command=/usr/local/bin/docker-compose
    -f /usr/local/app/docker-compose.yml up
redirect_stderr=true
stdout_logfile=/var/log/myapp_container.log
stopasgroup=true
user=myuser
Run Code Online (Sandbox Code Playgroud)

supervisord docker docker-compose

6
推荐指数
1
解决办法
6063
查看次数

mozilla-django-oidc 在 django 3 上带有 keycloak

我正在尝试使用mozilla-django-oidc (1.2.4 ) 连接 Django (3.2) 和 Keycloak (12.0.2) 。

单击“登录”按钮(oidc_authentication_init根据文档使用视图)时,我得到了到 keycloak 的重定向,但成功登录后,我收到此错误:

Exception Type: HTTPError at /oidc/callback/
Exception Value: 404 Client Error: Not Found for url: http://localhost:8080/auth/realms/mycorp/protocol/openid-connect/token

Run Code Online (Sandbox Code Playgroud)

django设置的相关设置有:

settings.py

Exception Type: HTTPError at /oidc/callback/
Exception Value: 404 Client Error: Not Found for url: http://localhost:8080/auth/realms/mycorp/protocol/openid-connect/token

Run Code Online (Sandbox Code Playgroud)

urls.py

INSTALLED_APPS = [
    ...,
    'mozilla_django_oidc',
]
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'mozilla_django_oidc.auth.OIDCAuthenticationBackend',
),

OIDC_AUTH_URI = 'http://localhost:8080/auth/realms/mycorp'
OIDC_CALLBACK_PUBLIC_URI = 'http://localhost'

LOGIN_REDIRECT_URL = OIDC_CALLBACK_PUBLIC_URI
LOGOUT_REDIRECT_URL = OIDC_AUTH_URI + '/protocol/openid-connect/logout?redirect_uri=' + OIDC_CALLBACK_PUBLIC_URI

OIDC_RP_CLIENT_ID = …
Run Code Online (Sandbox Code Playgroud)

django openid-connect keycloak

6
推荐指数
1
解决办法
3362
查看次数

使用 clientid/clientsecret 验证 FastAPI

我正在尝试使用 clientid-clientsecret 设置 FastAPI (0.71.0) 身份验证。

我进行了配置OAuth2AuthorizationCodeBearer,显然从 swagger ( /docs) 端点来看,它看起来很好,它要求提供 client-id 和 client-secret 进行身份验证。

auth = OAuth2PasswordBearer(
    authorizationUrl=AUTH_URL,
    tokenUrl=TOKEN_URL,
)

agent = FastAPI(
    description=_DESCRIPTION,
    version=VERSION,
    dependencies=[Depends(auth)],
    middleware=middlewares,
    root_path=os.getenv('BASEPATH', '/'),
    swagger_ui_init_oauth={
        'usePkceWithAuthorizationCodeGrant': True,
        'scopes': 'openid profile email'
    }
)
Run Code Online (Sandbox Code Playgroud)

不过,我可以直接调用 API,通过任何 Bearer 进行访问,例如:

import requests

url = 'http://localhost:8080/test'
headers = {'Authorization': 'Bearer BADTOKEN', 'Content-Type': 'application/json', 'Accept': 'application/json'}
response = requests.get(url=url, params={}, headers=headers)
Run Code Online (Sandbox Code Playgroud)

response.ok = True,所以我可能在 FastAPI 设置中遗漏了某些内容,但看不到在哪里。

这是正确的身份验证流程吗?

PS:我想要实现的是服务与服务之间的通信,因此普通用户无法访问该 API

keycloak fastapi

5
推荐指数
1
解决办法
7078
查看次数