簡體   English   中英

我將如何在 Gentics Mesh 中實施 Okta 身份驗證?

[英]How would I implement Okta Authentication in Gentics Mesh?

Gentics Mesh 支持內置 Keycloak,但我想改用 Okta。

什么是最佳實踐?

是否需要修改Mesh源代碼?

或者我應該在中間件層處理身份驗證?

或者我可以實現 AuthServicePlugin 來驗證來自 Okta 的令牌嗎?
https://github.com/gentics/mesh/blob/dev/plugin-api/src/main/java/com/gentics/mesh/plugin/auth/AuthServicePlugin.java

更新
我已經嘗試在 mesh.yml 配置中使用我的 Okta 服務器,但拋出了異常。
這是我的 Okta 服務的 OIDC 網址 -
https://{yourOktaDomain}/oauth2/v1/authorize

不幸的是,OAuth2 實現似乎是特定於 Keycloak 的 -

com.gentics.mesh.core.rest.error.GenericRestException: 500 Internal Server Error oauth_config_error at com.gentics.mesh.core.rest.error.Errors.error(Errors.java:124) ... Caused by: java.lang.RuntimeException: Error while loading realm info. Got code {404} at com.gentics.mesh.auth.MeshOAuth2ServiceImpl.fetchPublicRealmInfo(MeshOAuth2ServiceImpl.java:451)

看起來它拼湊了一個不適用於 Okta 的網址。
https://github.com/gentics/mesh/blob/f85dac8bf954248a6556323d792e6b849fb1d593/services/keycloak-auth/src/main/java/com/gentics/mesh/auth/MeshOAuth2ServiceImpl.java#L434

如果我沒記錯的話,實現 [MeshOAuth2ServiceImpl] 可以更改為支持任何 OIDC。

身份驗證機制最近已更新。

Gentics Mesh 現在將扮演資源服務器的角色。 只要添加了來自 OAuth 服務器的公鑰,它就可以接受任何 JWT。

插件 API 已更新,以支持 oauth 用戶和網格之間的自定義映射。 例如,這允許您將多個 oauth2 用戶映射到一個包含所需角色/組的網格用戶。 您還可以創建一個 1:1 映射,其中每個 oauth2 用戶都將添加到 Mesh。

OAuth 服務器的公鑰可以通過插件 API 加載或硬編碼在public-keys.json文件中。

您可以在此處閱讀有關此主題的更多信息: https : //getmesh.io/docs/authentication/#_oauth2_oidc

根據 Genetics Mesh 文檔, OAuth2 是開箱即用的 我會使用 Okta 中的 OpenID Connect 功能來獲取 JWT 並在 Genetics Mesh 中使用它。

有一個將 OIDC 與 KeyCloak 結合使用的配置示例,但您可以將 Okta 端點替換為提供的 KeyCloak 端點。

security:
  oauth2:
    enabled: true
    config:
      realm: "master"
      authServerUrl: "http://localhost:3000/auth" # Okta endpoint here
      sslRequired: "external"
      resource: "mesh"
      credentials:
        secret: "9b65c378-5b4c-4e25-b5a1-a53a381b5fb4" # application secret here
      confidentialPort: 0

同樣根據文檔,如果您需要角色映射,則必須創建一個AuthServicePlugin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM