Skycloak

chính thức

Máy chủ Model Context Protocol cho Skycloak quản lý Keycloak. Quản lý cụm, realm, ứng dụng, SSO và người dùng từ bất kỳ máy khách MCP nào.

GitHubDùng thử MCP nàyĐược tài trợ

Bạn có thể làm gì với Skycloak MCP?

Quản lý các cụm Skycloak (Keycloak được quản lý), realm và SSO của bạn từ bất kỳ máy khách MCP nào.

  • Đánh giá nâng cấp cụm — Hỏi cụm nào đang tụt hậu về nâng cấp Keycloak và nhận lộ trình nâng cấp qua list_cluster_upgradesget_cluster_upgrade_path.
  • Cung cấp realm — Tạo realm với đăng nhập Google và GitHub bằng create_realmcreate_identity_provider.
  • Chuyển tiếp SIEM — Thiết lập đích SIEM chuyển tiếp sự kiện quản trị đến webhook Datadog qua create_siem_destination.
  • Thiết lập tên miền tùy chỉnh — Thêm tên miền tùy chỉnh, lấy bản ghi DNS và xác minh bằng create_domainverify_domain.

Tài liệu

skycloak-mcp

Smithery

Máy chủ Model Context Protocol chính thức cho Skycloak (Keycloak được quản lý): quản lý cụm, realm, ứng dụng và SSO của bạn từ bất kỳ máy khách MCP nào (Claude Desktop, Claude Code, Cursor).

Trạng thái: bản phát hành sớm. Phạm vi công cụ đang được mở rộng; xem changelog để biết những gì hiện có.

Bắt đầu nhanh

claude mcp add --transport http skycloak https://mcp.skycloak.io

Không cần API key, không cần client ID, không cần cấu hình. Trình duyệt của bạn mở ra, bạn đăng nhập vào Skycloak và các công cụ xuất hiện. Bất kỳ máy khách MCP nào hỗ trợ streamable HTTP đều hoạt động theo cách tương tự: chỉ cần cung cấp URL và không gì khác.

Sau đó hãy yêu cầu điều gì đó:

  • "Cụm Keycloak nào của tôi đang chậm nâng cấp?"
  • "Tạo một realm staging trên cụm EU với đăng nhập Google và GitHub."
  • "Ai đã được thêm vào realm production trong tuần qua?"
  • "Thiết lập đích SIEM chuyển tiếp sự kiện quản trị đến webhook Datadog của chúng tôi."

Xác thực & bảo mật

  • HTTP được lưu trữ, với OAuth (không cần cấu hình thông tin xác thực). Trỏ máy khách của bạn đến https://mcp.skycloak.io mà không cần header. Máy chủ trả lời 401 bằng con trỏ đến siêu dữ liệu RFC 9728 của nó tại /.well-known/oauth-protected-resource, máy khách chạy luồng ủy quyền mã trình duyệt với realm đăng nhập Skycloak và mã truy cập nhận được sẽ được trao đổi lấy API key ngắn hạn, có phạm vi workspace mà phiên chạy sử dụng. Key kéo dài một giờ và được gia hạn tự động. Không có gì được lưu trữ trong cấu hình máy khách của bạn.
  • HTTP được lưu trữ, với API key. Tạo key trong bảng điều khiển Skycloak và gửi nó dưới dạng Authorization: Bearer <key> (hoặc API-Key: <key>). Mỗi yêu cầu mang thông tin xác thực riêng và chỉ hoạt động với workspace của thông tin xác thực đó. Máy chủ không lưu trạng thái phiên, vì vậy một yêu cầu không bao giờ kế thừa trạng thái của người gọi khác. Key không được xác minh trước khi sử dụng: API Skycloak là cơ quan có thẩm quyền, vì vậy key không hợp lệ sẽ xuất hiện dưới dạng 401 ở lần gọi công cụ đầu tiên thay vì tại thời điểm kết nối.
  • Công cụ khớp với vai trò của bạn. Qua OAuth, danh sách công cụ được cắt giảm theo phạm vi mà phiên được phép, vì vậy thành viên workspace chỉ đọc sẽ không được hiển thị các công cụ ghi mà có thể trả lời 403. Với API key, toàn bộ bề mặt được đăng ký, vì phạm vi của key không hiển thị với máy chủ và một cuộc gọi không được phép sẽ xuất hiện dưới dạng 403 từ API.
  • Stdio cục bộ. Chạy skycloak-mcp init và phê duyệt trong trình duyệt của bạn (luồng ủy quyền thiết bị OAuth 2.0). Nó tạo API key có phạm vi workspace, lưu trữ trong keychain hệ điều hành của bạn và tự động phát hiện workspace mặc định của bạn (truyền --workspace <id> để chọn workspace khác). skycloak-mcp logout xóa key đã lưu trữ.
  • Không đầu / CI. Đặt biến môi trường SKYCLOAK_API_KEY (tạo key trong bảng điều khiển Skycloak) để bỏ qua trình duyệt hoàn toàn. Nó luôn được ưu tiên hơn keychain.
  • Các thao tác ghi được kiểm soát bởi thông tin xác thực của bạn, không phải bởi cờ. Máy chủ được lưu trữ tại https://mcp.skycloak.io chạy có khả năng ghi và những gì bạn thực sự có thể thay đổi bị giới hạn bởi phạm vi của key và vai trò workspace của bạn: thành viên chỉ đọc không thể thay đổi bất cứ điều gì, bất kể danh sách công cụ nói gì. Thêm ?readonly=true vào URL để buộc bề mặt công cụ chỉ đọc cho một phiên. Tệp nhị phân cục bộ hoạt động ngược lại và không đăng ký công cụ ghi nào trừ khi được khởi động với --allow-writes.
  • Thông tin xác thực cụm là tùy chọn. get_cluster_credentials trả về thông tin xác thực quản trị Keycloak của một cụm, mà trợ lý giữ key sẽ nhìn thấy, vì vậy init không yêu cầu phạm vi đó theo mặc định. Sử dụng key mang phạm vi đó: tạo key trong bảng điều khiển hoặc qua stdio đăng nhập với skycloak-mcp init --allow-credentials. Nếu không có nó, công cụ trả về 403 giải thích cả hai cách.
  • Các công cụ phá hủy yêu cầu xác nhận: ví dụ: xóa realm cần đối số confirm=true rõ ràng.
  • Các yêu cầu bị giới hạn tốc độ theo gói Skycloak của bạn; trên phản hồi 429, máy chủ hiển thị Retry-After.

Công cụ

129 công cụ: 58 chỉ đọc và 71 ghi. Các công cụ chỉ đọc luôn khả dụng. Trên máy chủ được lưu trữ, các công cụ ghi cũng được đăng ký và được kiểm soát bởi phạm vi thông tin xác thực của bạn; tệp nhị phân cục bộ chỉ đăng ký chúng khi được khởi động với --allow-writes.

Tên công cụ mang tiền tố skycloak_ mà bảng dưới đây bỏ qua, vì vậy list_clustersskycloak_list_clusters trong máy khách của bạn.

Khu vựcChỉ đọcGhi (--allow-writes)
Cụmlist_clusters, get_cluster, list_cluster_locations, list_cluster_types, list_cluster_features, list_cluster_versions, list_cluster_upgrades, get_cluster_upgrade_path, get_cluster_credentials, get_cluster_insights, get_cluster_maintenance_windowcreate_cluster, update_cluster, delete_cluster, cancel_cluster_upgrade, set_cluster_maintenance_window, delete_cluster_maintenance_window
Bảo mật biênget_cluster_security, list_cluster_captcha_domainsupdate_cluster_security, add_cluster_captcha_domain, remove_cluster_captcha_domain
Realmlist_realms, get_realmcreate_realm, update_realm, delete_realm
Ứng dụnglist_applications, get_application, list_application_roles, list_application_sessionscreate_application, update_application, delete_application, assign_application_role, remove_application_role, rotate_application_secret
Nhà cung cấp danh tínhlist_identity_providers, get_identity_provider, list_identity_provider_templates, discover_oidccreate_identity_provider (OIDC), update_identity_provider, delete_identity_provider, test_identity_provider
Người dùng, vai trò & nhómlist_realm_users, get_realm_user, list_realm_roles, get_realm_role, list_realm_groups, get_realm_group, list_realm_group_members, list_user_roles, list_user_groupscreate_realm_user, update_realm_user, delete_realm_user, create_realm_role, update_realm_role, delete_realm_role, create_realm_group, update_realm_group, delete_realm_group, assign_realm_user_role, remove_realm_user_role, add_realm_user_to_group, remove_realm_user_from_group
Tên miền tùy chỉnhlist_domains, get_domain, list_domain_routes, get_domain_routecreate_domain, verify_domain, delete_domain, create_domain_route, update_domain_route, delete_domain_route
Thương hiệu & chủ đềlist_themes, get_theme, get_theme_assignment, get_client_theme_assignment, get_login_branding, get_email_branding, download_theme_contentset_theme_assignment, set_client_theme_assignment, update_theme, delete_theme, upsert_login_branding, delete_login_branding, upsert_email_branding, delete_email_branding
Tiện ích mở rộnglist_extensions, list_cluster_extensionsinstall_extension, upgrade_extension, update_extension, uninstall_extension, delete_extension
SMTPget_smtpupsert_smtp, delete_smtp, test_smtp
Xuất & nhật kýlist_exports, get_export, get_logs, get_security_logs, query_eventscreate_export, delete_export, export_cluster_events
Nhập & xuất realmget_realm_export, get_realm_importcreate_realm_export, create_realm_import, create_realm_import_upload_url
SIEMlist_siem_destinations, get_siem_destinationcreate_siem_destination, update_siem_destination, delete_siem_destination, test_siem_destination
Webhooklist_webhook_event_types, list_webhook_subscriptions, get_webhook_subscriptioncreate_webhook_subscription, update_webhook_subscription, delete_webhook_subscription, test_webhook_subscription

Quy ước: các công cụ phá hủy (delete_*, uninstall_extension, cancel_cluster_upgrade) yêu cầu confirm=true. create_cluster là bất đồng bộ: thăm dò get_cluster cho đến khi cụm ở trạng thái available. create_domain trả về bản ghi DNS mà khách hàng phải tạo; verify_domain kích hoạt kiểm tra DNS. set_theme_assignment kích hoạt chủ đề tùy chỉnh theo loại chủ đề Keycloak (chuỗi rỗng đặt lại về mặc định tích hợp). update_cluster_security không chạm vào cài đặt CAPTCHA. Nhập/xuất realm di chuyển cấu hình của một realm và tách biệt với create_export, công cụ xuất toàn bộ cơ sở dữ liệu của một cụm: cả hai đều bất đồng bộ và kho lưu trữ realm luôn được mã hóa, vì vậy mật khẩu dùng để xuất cần thiết để nhập lại. Một realm có thể được nhập trực tiếp từ bản xuất hiện có (source_export_id) hoặc từ kho lưu trữ đã tải lên (create_realm_import_upload_url, PUT, sau đó upload_s3_key); việc nhập tạo một realm và từ chối xung đột tên thay vì ghi đè, đồng thời cần confirm=true vì nó mang theo người dùng và thông tin xác thực.

Lời nhắc

Tám lời nhắc cung cấp cho bạn điểm khởi đầu vào bề mặt công cụ đó. Máy khách hiển thị chúng dưới dạng lệnh gạch chéo hoặc hành động đề xuất; mỗi lời nhắc nhận đối số (realm, cụm, khoảng thời gian) và hướng dẫn mô hình sử dụng đúng công cụ theo đúng thứ tự.

Lời nhắcChức năng
audit_self_registrationTìm mọi realm vẫn cho phép tự đăng ký, trên một cụm hoặc tất cả các cụm
review_upgradesPhát hiện cụm chậm phiên bản Keycloak và vạch ra lộ trình nâng cấp
triage_failed_loginsLấy các lần đăng nhập thất bại gần đây cho một realm và nhóm chúng theo IP nguồn
review_identity_providersLiệt kê các kết nối SSO của một realm và kiểm tra xem một kết nối cụ thể có được bật không
review_admin_changesHiển thị ai đã thay đổi gì trong một realm gần đây, tập trung vào cài đặt đăng nhập và bảo mật
provision_environmentTạo cụm, thêm realm và kết nối nhà cung cấp danh tính, xác nhận từng bước
set_up_custom_domainThêm tên miền tùy chỉnh, trả lại bản ghi DNS chính xác, xác minh và định tuyến đến một realm
rotate_client_secretTạo lại client secret của ứng dụng với phạm vi ảnh hưởng được nêu rõ trước tiên

Các lời nhắc được kiểm soát giống như các công cụ chúng đề cập: ba lời nhắc thay đổi chỉ được cung cấp cho các phiên có thể gọi các công cụ ghi mà chúng tham chiếu và hướng dẫn của chúng yêu cầu mô hình xác nhận với bạn trước khi thay đổi bất cứ điều gì. Yêu cầu confirm=true đối với các công cụ phá hủy vẫn được áp dụng bên trên.

Kỹ năng

Trong khi lời nhắc là điểm khởi đầu, kỹ năng là một sổ tay vận hành đầy đủ mà mô hình tải theo yêu cầu. Máy chủ đi kèm bốn kỹ năng, được phục vụ qua bản nháp Tiện ích mở rộng Kỹ năng SEP-2640: nó khai báo io.modelcontextprotocol/skills trong các khả năng của mình, trả lời skills/listskills/get, đồng thời phục vụ từng SKILL.md như một tài nguyên thông thường tại skill://<name>/SKILL.md với hàm băm sha256 trong mục danh sách của nó. Thư mục plugin của OpenAI nhập các kỹ năng chính xác theo hình thức này.

Kỹ năngNội dung mã hóa
auth-incident-triagePhân loại "người dùng không thể đăng nhập": tách biệt sự cố nền tảng khỏi tấn công và thay đổi cấu hình, sử dụng sự kiện, nhật ký WAF và tình trạng cụm. Chỉ đọc
enterprise-sso-rolloutKết nối IdP doanh nghiệp vào một realm từ đầu đến cuối: xác thực nhà phát hành, đăng ký ứng dụng thượng nguồn, cấu hình broker, kiểm tra kết nối và xác minh dựa trên sự kiện đăng nhập thực tế
keycloak-migration-doctorKiểm tra trước bản xuất, nhập hoặc di chuyển Keycloak dựa trên các trình chặn mà bộ phận hỗ trợ thực sự gặp phải (chính sách script, đường dẫn /auth cũ, kỳ vọng xuất một phần) và chẩn đoán công việc thất bại bằng cách đọc error_message thực tế thay vì thông báo bảng điều khiển chung chung
keycloak-upgrade-readinessĐánh giá độ lệch phiên bản, xác định những gì phiên bản Keycloak mới phá vỡ (tiện ích mở rộng, chủ đề) và sắp xếp triển khai trên các môi trường với bản xuất làm kế hoạch khôi phục

Các kỹ năng tuân theo cùng kiểm soát như các công cụ chúng đề cập: ba quy trình làm việc xây dựng quanh công cụ ghi bị giữ lại khỏi các phiên chỉ đọc và một phiên có phạm vi chỉ được đề xuất kỹ năng mà nó thực sự có công cụ. Các nguồn nằm trong internal/tools/skills/, một thư mục cho mỗi kỹ năng, ở định dạng Agent Skills tiêu chuẩn, vì vậy chúng cũng hoạt động khi được sao chép trực tiếp vào thư mục kỹ năng cục bộ.

Kết nối

Đối với HTTP được lưu trữ, cách đơn giản nhất là OAuth, không cần thông tin xác thực nào:

claude mcp add --transport http skycloak https://mcp.skycloak.io

Lần gọi đầu tiên mở trình duyệt của bạn, bạn phê duyệt trên trang đăng nhập Skycloak và các công cụ xuất hiện. Nếu bạn thuộc nhiều workspace, hãy chỉ định workspace bạn muốn:

claude mcp add --transport http skycloak "https://mcp.skycloak.io?workspace=<workspace-id>"

Nếu không, hãy tạo API key trong bảng điều khiển Skycloak và cấu hình máy khách MCP của bạn để gửi nó dưới dạng bearer token:

claude mcp add --transport http skycloak https://mcp.skycloak.io --header "Authorization: Bearer sk_sc_XXX"

Điều này thêm nội dung sau vào .claude.json:

{
  "mcpServers": {
    "skycloak": {
      "type": "http",
      "url": "https://mcp.skycloak.io",
      "headers": {
        "Authorization": "Bearer sk_sc_XXX"
      }
    }
  }
}

Đối với stdio cục bộ, hãy đăng nhập một lần, sau đó trỏ máy khách của bạn đến skycloak-mcp run:

skycloak-mcp init        # one-time browser sign-in; stores a key in your keychain

Claude Desktop / Cursor (cục bộ, stdio):

{
  "mcpServers": {
    "skycloak": {
      "command": "skycloak-mcp",
      "args": ["run", "--transport", "stdio"]
    }
  }
}

Claude Code:

claude mcp add skycloak -- skycloak-mcp run --transport stdio

Đối với môi trường headless / CI (không có trình duyệt), bỏ qua init và truyền khóa thay vào đó: thêm "env": { "SKYCLOAK_API_KEY": "sk_sc_..." } vào cấu hình, hoặc claude mcp add skycloak --env SKYCLOAK_API_KEY=sk_sc_... -- skycloak-mcp run --transport stdio.

Chỉ thêm --allow-writes khi bạn có ý định thực hiện thay đổi (đăng nhập bằng skycloak-mcp init --allow-writes, hoặc dùng khóa có phạm vi ghi).

Thêm ?readonly=true vào một URL HTTP được lưu trữ để chỉ hiển thị các công cụ chỉ đọc cho phiên HTTP đó, hoặc ?readonly=false để yêu cầu bề mặt công cụ có khả năng ghi. Tham số truy vấn mặc định là false, nhưng các công cụ ghi chỉ được đăng ký khi máy chủ được khởi động với --allow-writes.

Thêm ?workspace=<uuid> để chọn không gian làm việc mà một phiên OAuth sẽ thao tác. Chỉ cần thiết khi bạn thuộc nhiều hơn một không gian làm việc; với một không gian làm việc duy nhất, máy chủ sẽ tự chọn cho bạn, và nếu bạn thuộc nhiều không gian mà không chỉ định cái nào, kết nối sẽ thất bại kèm thông báo liệt kê chúng.

Chạy giao thức vận chuyển HTTP

skycloak-mcp run --transport http --http-addr :8080

Nó không cần thông tin xác thực riêng: người gọi tự cung cấp thông tin xác thực của họ cho từng yêu cầu, vì vậy không có gì được tiêm vào lúc triển khai. GET /healthzGET /readyz không yêu cầu xác thực và chỉ báo cáo rằng tiến trình đang chạy; chúng cố ý không thăm dò API Skycloak, vì vậy một sự cố thượng nguồn không thể làm hỏng đồng loạt các lần kiểm tra của mọi bản sao. Máy chủ không giữ trạng thái phiên, vì vậy các bản sao không cần gắn kết phiên và có thể được mở rộng hoặc triển khai lại tự do. SIGTERM dừng các kết nối mới và xả các cuộc gọi đang xử lý.

Đường dẫn OAuth luôn bật khi SKYCLOAK_ISSUERSKYCLOAK_DASHBOARD_URL được thiết lập, điều này mặc định là có. GET /.well-known/oauth-protected-resource sau đó được phục vụ mà không cần xác thực, đặt tên realm làm máy chủ ủy quyền. Giá trị resource của nó được lấy từ SKYCLOAK_PUBLIC_URL khi được thiết lập, và nếu không thì lấy từ Host và scheme của chính yêu cầu, vì vậy một triển khai máy chủ đơn sau ingress không cần cấu hình thêm. Scheme đến từ X-Forwarded-Proto khi có mặt, và nếu không thì mặc định là https cho mọi thứ trừ máy chủ loopback, vì TLS kết thúc ở thượng nguồn và việc công bố định danh http:// sẽ không khớp với URL mà máy khách đã kết nối. Đặt SKYCLOAK_PUBLIC_URL nếu ingress của bạn viết lại Host. Tài liệu cũng liệt kê openid profile email làm scopes_supported của nó, và thử thách WWW-Authenticate lặp lại chúng dưới dạng tham số scope, vì vậy máy khách đọc một trong hai sẽ yêu cầu realm cung cấp chúng: openid là bắt buộc, vì quá trình trao đổi token khiến bảng điều khiển gọi endpoint userinfo của Keycloak và Keycloak từ chối token được cấp mà không có nó. Một token đến mà không có nó sẽ bị từ chối tại bước xác minh với 401 và thử thách, thay vì được chuyển đến một quá trình trao đổi không thể thành công, vì vậy máy khách vẫn giữ một khoản cấp từ trước sẽ ngừng thử lại và đăng nhập lại. Xóa trống một trong hai biến issuer hoặc dashboard sẽ tắt hoàn toàn OAuth, và máy chủ quay lại thách thức bằng khóa API và không gì khác.

OPENAI_APPS_CHALLENGE_TOKEN phục vụ token xác minh thư mục plugin của OpenAI tại /.well-known/openai-apps-challenge, dưới dạng văn bản thuần túy và không gì khác. Nếu không được thiết lập, tuyến đường không được đăng ký và đường dẫn trả về 404.

Quá trình khởi động ghi một dòng nhật ký với cấu hình kết nối đã phân giải (oauth=, issuer=, dashboard=, public_url=, endpoint=, allow_writes=), vì vậy một triển khai cấu hình sai có thể được phát hiện mà không cần triển khai lại. Mọi yêu cầu bị từ chối trên đường dẫn OAuth đều ghi một dòng nhật ký nêu tên giai đoạn thất bại (verify, exchange hoặc scopes), trạng thái mà người gọi nhận được, và lỗi cơ bản. Một lỗi xác minh bổ sung kiểm tra đã từ chối token (expired, wrong_issuer, bad_signature, unknown_key_id, wrong_token_type, no_openid_scope, v.v.); một lỗi trao đổi bổ sung trạng thái của bảng điều khiển và máy chủ được gọi. Người gọi xuất hiện dưới dạng chủ thể của token sau khi được xác minh, và không bao giờ dưới dạng thông tin xác thực: token truy cập, tiêu đề Authorization và khóa API được tạo ra không bao giờ bị ghi nhật ký.

Cấu hình

Biến môi trườngMặc định
SKYCLOAK_API_KEYkhông có (tùy chọn cho stdio; máy khách HTTP cung cấp tiêu đề API-Key thay vào đó)
SKYCLOAK_ENDPOINThttps://api.skycloak.io
SKYCLOAK_API_VERSIONphiên bản API hiện tại
SKYCLOAK_ISSUERhttps://login.app.skycloak.io/realms/skycloak (đăng nhập CLI, và máy chủ ủy quyền mà giao thức vận chuyển HTTP xác minh token)
SKYCLOAK_CLIENT_IDskycloak-mcp (chỉ dành cho luồng thiết bị CLI)
SKYCLOAK_DASHBOARD_URLhttps://app.skycloak.io (tạo khóa CLI và khóa phiên HTTP)
SKYCLOAK_PUBLIC_URLkhông có (suy ra từ mỗi yêu cầu; đặt nó khi ingress viết lại Host)
OPENAI_APPS_CHALLENGE_TOKENPhục vụ token xác minh thư mục plugin của OpenAI tại /.well-known/openai-apps-challenge. Nếu không được thiết lập, đường dẫn đó trả về 404.

Lệnh: init (đăng nhập qua trình duyệt), run (phục vụ), logout (xóa khóa đã lưu). init chấp nhận --workspace <id>, --allow-writes, --allow-credentials, và --ttl-days (mặc định 90).

CờMặc địnhMô tả
--transportstdiostdio hoặc http
--http-addr:8080địa chỉ lắng nghe cho giao thức vận chuyển HTTP
--allow-writesfalsebật các công cụ thay đổi dữ liệu cho stdio và cho phép các phiên HTTP có readonly=false đăng ký công cụ ghi

Phát triển

make build      # build the server binary
make test       # unit tests
make run        # run on stdio for local testing
make inspector  # MCP Inspector against the local binary
make lint       # golangci-lint
make generate   # regenerate the API client from the OpenAPI spec

Máy khách API trong internal/apiclient được tạo từ đặc tả OpenAPI của Skycloak bằng oapi-codegen.

Giữ đồng bộ với API

Máy khách trong internal/apiclient được tạo từ internal/apiclient/openapi.yaml bằng oapi-codegen; chạy make generate để làm mới nó. CI sẽ thất bại nếu mã đã tạo được cam kết lệch khỏi đặc tả. Các yêu cầu được thử lại trên 429/5xx với backoff nhận biết Retry-After.

Phân phối

Được phát hành dưới dạng tệp nhị phân GitHub và hình ảnh container ghcr.io/sky-cloak/skycloak-mcp trên mỗi tag, và được xuất bản lên MCP Registry dưới tên io.skycloak/skycloak-mcp. Hầu hết mọi người không cần cả hai: máy chủ được lưu trữ không cần cài đặt.

Bảo mật

Vui lòng báo cáo lỗ hổng một cách riêng tư. Xem SECURITY.md.

Người đóng góp

Được xây dựng tại Skycloak bởi Guilliano Molaire, Neville Omangi và Aphilas. Lịch sử kho lưu trữ đã được nén lại khi được mở công khai, vì vậy nhật ký cam kết không phản ánh ai đã viết phần nào.

Giấy phép

Apache-2.0. Mô tả OpenAPI trong internal/apiclient/openapi.yaml được tạo từ API nền tảng Skycloak và thuộc bản quyền (c) Skycloak; nó được đưa vào đây để máy khách có thể được tạo và xác minh. Xem NOTICE.