我很难找到我需要的简洁示例。
我在 https://auth.mycompany.com 有一个可用的 Keycloak 服务器。 (当然不是真实的公司名称) 我在 http://testapp.mycompany.com.
有一个 Flask 服务器我需要做的就是有一个简单的页面,其中包含连接到我的 Keycloak 服务器的登录流程。事实证明,所有的 Keycloak 扩展都被放弃并且记录很少。有flask_oidc、pyoidc等。但是,我在网上能找到的文档确实不太好。我浏览了很多 github 存储库,并努力浏览了很多重口音的 YouTube 视频,但还没有找到一个简单而简洁地实现 OIDC 登录流程的 Flask(Django 也可以接受)应用程序的示例。我什至尝试过 ChatGPT,它给了我几个例子,但没有一个起作用。我了解 OAuth2.0 和 OIDC 标准,并阅读了它们的源文档,但我完全没能找到这些东西的样板实现来开始我的键盘实践工作。
有人可以向我展示一个非常基本的 Flask 或 Django 应用程序的最小示例吗?它可以连接到我的 Keycloak 服务器。我很乐意继续自己研究以建立它,但我似乎无法开始。
我尝试用谷歌搜索,直到达到疯狂的边缘。我已经尝试了许多存储库,但实际上不起作用。 ChatGPT 告诉我虚构的事情。
结构文件夹位于此处。在您的 keycloak 服务器中,您必须创建一个客户端连接才能拥有
client_id
和 client_secret_key
在服务器/常量/KeyCloakConstants.py中
KEYCLOAK_SERVER_URL = os.getenv(
"KEYCLOAK_SERVER_URL", "http://keycloak/auth/"
)
KEYCLOAK_REALM_NAME = os.getenv("KEYCLOAK_REALM_NAME", "user-dev")
# client
KEYCLOAK_CLIENT_ID = os.getenv("KEYCLOAK_CLIENT_ID", "client-service")
KEYCLOAK_CLIENT_SECRET_KEY = os.getenv(
"KEYCLOAK_CLIENT_SECRET_KEY", "jGlenvHtelkBtSS6zsi72prZQeoAmPxy"
)
在服务器/扩展.py中
from server.constants import KeyCloakConstants as kcl
from keycloak import KeycloakOpenID
keycloak_client = KeycloakOpenID(
server_url=kcl.KEYCLOAK_SERVER_URL,
realm_name=kcl.KEYCLOAK_REALM_NAME,
client_id=kcl.KEYCLOAK_CLIENT_ID,
client_secret_key=kcl.KEYCLOAK_CLIENT_SECRET_KEY,
)
在服务器/服务/KeycloakService.py中
from server.extensions import keycloak_client
class KeycloakClientService:
@classmethod
def login_user(cls, data):
token = keycloak_client.token(
username=data.get("username"),
password=data.get("password"),
)
return token
在服务器/控制器/AuthController.py中
from flask import jsonify
from server.services.KeycloakService import KeycloakClientService
auth_api = Blueprint("auth_api", __name__)
@auth_api.route("/login", methods=["POST"])
def login_user():
"""
`param`
:body:
username: String
password: String
`return`
:body: access_token, expires_in, token_type
"""
data = request.json
token = KeycloakClientService.login_user(credentials)
return jsonify(output)
这里只是在烧瓶中使用keycloak的示例。在您的服务器中,您需要更多来处理所有情况,例如来自 keycloak 的错误请求、不正确的用户