1"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3834],{18774:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>x,frontMatter:()=>c,metadata:()=>d,toc:()=>t});var l=s(74848),i=s(28453);const c={title:"Keycloak \u96c6\u6210"},r=void 0,d={id:"features/sso/keycloak",title:"Keycloak \u96c6\u6210",description:"\u672c\u6559\u7a0b\u662f\u793e\u533a\u8d21\u732e\uff0c\u4e0d\u53d7 Open WebUI \u56e2\u961f\u652f\u6301\u3002\u5b83\u4ec5\u4f5c\u4e3a\u5982\u4f55\u4e3a\u60a8\u7684\u7279\u5b9a\u7528\u4f8b\u81ea\u5b9a\u4e49 Open WebUI \u7684\u6f14\u793a\u3002\u60f3\u8981\u8d21\u732e\uff1f\u67e5\u770b\u8d21\u732e\u6559\u7a0b\u3002",source:"@site/i18n/cn/docusaurus-plugin-content-docs/current/features/sso/keycloak.mdx",sourceDirName:"features/sso",slug:"/features/sso/keycloak",permalink:"/features/sso/keycloak",draft:!1,unlisted:!1,editUrl:"https://github.com/open-webui/docs/blob/main/docs/features/sso/keycloak.mdx",tags:[],version:"current",frontMatter:{title:"Keycloak \u96c6\u6210"},sidebar:"tutorialSidebar",previous:{title:"\ud83d\udd12 SSO: \u8054\u5408\u8eab\u4efd\u9a8c\u8bc1\u652f\u6301",permalink:"/features/sso/"},next:{title:"\ud83d\udee0\ufe0f \u6545\u969c\u6392\u9664",permalink:"/troubleshooting/"}},o={},t=[{value:"1. \u73af\u5883\u51c6\u5907\u548c\u7aef\u53e3\u66f4\u6539",id:"1-\u73af\u5883\u51c6\u5907\u548c\u7aef\u53e3\u66f4\u6539",level:2},{value:"Open WebUI \u670d\u52a1\u5668\u7aef\u53e3",id:"open-webui-\u670d\u52a1\u5668\u7aef\u53e3",level:3},{value:"Keycloak \u7aef\u53e3\u51b2\u7a81\u95ee\u9898",id:"keycloak-\u7aef\u53e3\u51b2\u7a81\u95ee\u9898",level:3},{value:"2. \u521b\u5efa Keycloak \u57df",id:"2-\u521b\u5efa-keycloak-\u57df",level:2},{value:"3. \u521b\u5efa OpenID Connect \u5ba2\u6237\u7aef",id:"3-\u521b\u5efa-openid-connect-\u5ba2\u6237\u7aef",level:2},{value:"4. \u542f\u7528\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u5e76\u83b7\u53d6\u51ed\u636e",id:"4-\u542f\u7528\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u5e76\u83b7\u53d6\u51ed\u636e",level:2},{value:"5. \u521b\u5efa\u6d4b\u8bd5\u7528\u6237",id:"5-\u521b\u5efa\u6d4b\u8bd5\u7528\u6237",level:2},{value:"6. \u914d\u7f6e Open WebUI .env",id:"6-\u914d\u7f6e-open-webui-env",level:2},{value:"7. HTTP vs. HTTPS",id:"7-http-vs-https",level:2},{value:"8. \u6d4b\u8bd5\u96c6\u6210",id:"8-\u6d4b\u8bd5\u96c6\u6210",level:2},{value:"9. \u914d\u7f6e Keycloak \u7ec4\u6620\u5c04",id:"9-\u914d\u7f6e-keycloak-\u7ec4\u6620\u5c04",level:2},{value:"9.1. \u6982\u8ff0",id:"91-\u6982\u8ff0",level:3},{value:"9.2. \u5b9a\u4f4d\u6620\u5c04\u5668\u521b\u5efa",id:"92-\u5b9a\u4f4d\u6620\u5c04\u5668\u521b\u5efa",level:3},{value:"9.3. \u521b\u5efa\u6620\u5c04\u5668",id:"93-\u521b\u5efa\u6620\u5c04\u5668",level:3},{value:"9.4. \u6620\u5c04\u5668\u8bbe\u7f6e",id:"94-\u6620\u5c04\u5668\u8bbe\u7f6e",level:3},{value:"9.5. \u4fdd\u5b58\u5e76\u5e94\u7528",id:"95-\u4fdd\u5b58\u5e76\u5e94\u7528",level:3},{value:"9.6. \u914d\u7f6e Open WebUI \u73af\u5883\u53d8\u91cf",id:"96-\u914d\u7f6e-open-webui-\u73af\u5883\u53d8\u91cf",level:3}];function h(e){const n={admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"\u672c\u6559\u7a0b\u662f\u793e\u533a\u8d21\u732e\uff0c\u4e0d\u53d7 Open WebUI \u56e2\u961f\u652f\u6301\u3002\u5b83\u4ec5\u4f5c\u4e3a\u5982\u4f55\u4e3a\u60a8\u7684\u7279\u5b9a\u7528\u4f8b\u81ea\u5b9a\u4e49 Open WebUI \u7684\u6f14\u793a\u3002\u60f3\u8981\u8d21\u732e\uff1f\u67e5\u770b\u8d21\u732e\u6559\u7a0b\u3002"})}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u6307\u5357\u89e3\u91ca\u5982\u4f55\u5c06 Open WebUI \u4e0e Keycloak \u96c6\u6210\u4ee5\u5b9e\u73b0 OIDC \u5355\u70b9\u767b\u5f55 (SSO)\u3002"}),"\n",(0,l.jsx)(n.h2,{id:"1-\u73af\u5883\u51c6\u5907\u548c\u7aef\u53e3\u66f4\u6539",children:"1. \u73af\u5883\u51c6\u5907\u548c\u7aef\u53e3\u66f4\u6539"}),"\n",(0,l.jsx)(n.h3,{id:"open-webui-\u670d\u52a1\u5668\u7aef\u53e3",children:"Open WebUI \u670d\u52a1\u5668\u7aef\u53e3"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u9ed8\u8ba4\u7aef\u53e3"}),": ",(0,l.jsx)(n.code,{children:"8080"})]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"keycloak-\u7aef\u53e3\u51b2\u7a81\u95ee\u9898",children:"Keycloak \u7aef\u53e3\u51b2\u7a81\u95ee\u9898"}),"\n",(0,l.jsxs)(n.p,{children:["Keycloak \u9ed8\u8ba4\u4e5f\u4f7f\u7528\u7aef\u53e3 ",(0,l.jsx)(n.code,{children:"8080"}),"\uff0c\u8fd9\u4f1a\u5bfc\u81f4\u51b2\u7a81\u3002\u5c06 Keycloak \u7aef\u53e3\u66f4\u6539\u4e3a ",(0,l.jsx)(n.code,{children:"9090"}),"\u3002"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"bin/kc.sh start-dev --http-port=9090\n"})}),"\n","\n",(0,l.jsx)(n.h2,{id:"2-\u521b\u5efa-keycloak-\u57df",children:"2. \u521b\u5efa Keycloak \u57df"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\u6253\u5f00\u6d4f\u89c8\u5668\u5e76\u8f6c\u5230 ",(0,l.jsx)(n.code,{children:"http://localhost:9090"}),"\u3002\u521b\u5efa\u7ba1\u7406\u5458\u8d26\u6237\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5728 ",(0,l.jsx)(n.code,{children:"http://localhost:9090/admin"})," \u767b\u5f55\u7ba1\u7406\u63a7\u5236\u53f0\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u4ece\u9876\u90e8\u7684\u57df\u4e0b\u62c9\u83dc\u5355\u4e2d\uff0c\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u6dfb\u52a0\u57df"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u8f93\u5165 ",(0,l.jsx)(n.code,{children:"openwebui"})," \u4f5c\u4e3a ",(0,l.jsx)(n.strong,{children:"\u57df\u540d"})," \u5e76\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u521b\u5efa"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{alt:"create-realm",src:s(18477).A+"",width:"839",height:"583"})}),"\n",(0,l.jsx)(n.h2,{id:"3-\u521b\u5efa-openid-connect-\u5ba2\u6237\u7aef",children:"3. \u521b\u5efa OpenID Connect \u5ba2\u6237\u7aef"}),"\n",(0,l.jsx)(n.admonition,{type:"info",children:(0,l.jsxs)(n.p,{children:["\u786e\u4fdd\u60a8\u5df2\u9009\u62e9 ",(0,l.jsx)(n.code,{children:"openwebui"})," \u57df\u3002\u9ed8\u8ba4\u662f ",(0,l.jsx)(n.code,{children:"master"}),"\u3002"]})}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{alt:"select-realm",src:s(3921).A+"",width:"652",height:"289"})}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\u786e\u4fdd\u9009\u62e9\u4e86\u60a8\u521a\u521b\u5efa\u7684 ",(0,l.jsx)(n.code,{children:"openwebui"})," \u57df\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5728\u5de6\u4fa7\u83dc\u5355\u4e2d\uff0c\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef"})," \u2192 ",(0,l.jsx)(n.strong,{children:"\u521b\u5efa\u5ba2\u6237\u7aef"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5c06 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef ID"})," \u8bbe\u7f6e\u4e3a ",(0,l.jsx)(n.code,{children:"open-webui"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u4fdd\u6301 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef\u534f\u8bae"})," \u4e3a ",(0,l.jsx)(n.code,{children:"openid-connect"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5c06 ",(0,l.jsx)(n.strong,{children:"\u8bbf\u95ee\u7c7b\u578b"})," \u8bbe\u7f6e\u4e3a ",(0,l.jsx)(n.code,{children:"confidential"})," \u5e76\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u4fdd\u5b58"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{alt:"access-setting-client",src:s(8780).A+"",width:"660",height:"516"})}),"\n",(0,l.jsx)(n.h2,{id:"4-\u542f\u7528\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u5e76\u83b7\u53d6\u51ed\u636e",children:"4. \u542f\u7528\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u5e76\u83b7\u53d6\u51ed\u636e"}),"\n",(0,l.jsx)(n.p,{children:'\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cKeycloak 26.x \u5c06\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u8bbe\u7f6e\u4e3a"\u65e0"\uff0c\u56e0\u6b64\u9700\u8981\u624b\u52a8\u914d\u7f6e\u3002'}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\u8f6c\u5230 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef"})," \u2192 ",(0,l.jsx)(n.strong,{children:"open-webui"})," \u2192 ",(0,l.jsx)(n.strong,{children:"\u8bbe\u7f6e"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u68c0\u67e5 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef\u8ba4\u8bc1\u5668"})," \u4e0b\u62c9\u83dc\u5355\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:['\u5c06"\u65e0"\u66f4\u6539\u4e3a ',(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef ID \u548c\u5bc6\u94a5"})," \u5e76\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u4fdd\u5b58"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u9ad8\u7ea7"})," \u9009\u9879\u5361\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5728 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1"})," \u90e8\u5206\uff0c\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u663e\u793a\u5bc6\u94a5"})," \u5e76\u590d\u5236\u5bc6\u94a5\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5c06\u6b64\u5bc6\u94a5\u7c98\u8d34\u5230\u60a8\u7684 ",(0,l.jsx)(n.code,{children:".env"})," \u6587\u4ef6\u4e2d\u7684 ",(0,l.jsx)(n.code,{children:"OAUTH_CLIENT_SECRET"})," \u53d8\u91cf\u4e2d\u3002"]}),"\n"]}),"\n","\n",(0,l.jsx)(n.h2,{id:"5-\u521b\u5efa\u6d4b\u8bd5\u7528\u6237",children:"5. \u521b\u5efa\u6d4b\u8bd5\u7528\u6237"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\u5728\u5de6\u4fa7\u83dc\u5355\u4e2d\uff0c\u8f6c\u5230 ",(0,l.jsx)(n.strong,{children:"\u7528\u6237"})," \u2192 ",(0,l.jsx)(n.strong,{children:"\u6dfb\u52a0\u7528\u6237"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u586b\u5199 ",(0,l.jsx)(n.strong,{children:"\u7528\u6237\u540d"}),"\u3001",(0,l.jsx)(n.strong,{children:"\u7535\u5b50\u90ae\u4ef6"})," \u7b49\u4fe1\u606f\uff0c\u7136\u540e\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u4fdd\u5b58"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u70b9\u51fb\u65b0\u521b\u5efa\u7684\u7528\u6237\uff0c\u7136\u540e\u8f6c\u5230 ",(0,l.jsx)(n.strong,{children:"\u51ed\u636e"})," \u9009\u9879\u5361\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u8f93\u5165\u65b0\u5bc6\u7801\uff0c\u53d6\u6d88\u9009\u4e2d ",(0,l.jsx)(n.strong,{children:"\u4e34\u65f6"}),"\uff0c\u7136\u540e\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u8bbe\u7f6e\u5bc6\u7801"}),"\u3002","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsxs)(n.em,{children:["\u793a\u4f8b\uff1a\u7528\u6237\u540d ",(0,l.jsx)(n.code,{children:"testuser"}),"\uff0c\u5bc6\u7801 ",(0,l.jsx)(n.code,{children:"Test1234!"})]})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"6-\u914d\u7f6e-open-webui-env",children:"6. \u914d\u7f6e Open WebUI .env"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728\u60a8\u7684 ",(0,l.jsx)(n.code,{children:".env"})," \u6587\u4ef6\u4e2d\u6dfb\u52a0\u6216\u4fee\u6539\u4ee5\u4e0b\u53d8\u91cf\u3002"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-env",children:"# \u542f\u7528 OAuth2/OIDC \u767b\u5f55\nENABLE_OAUTH_SIGNUP=true\n\n# Keycloak \u5ba2\u6237\u7aef\u4fe1\u606f\nOAUTH_CLIENT_ID=open-webui\nOAUTH_CLIENT_SECRET=<YOU
1R_COPIED_SECRET>\n\n# OIDC \u53d1\u73b0\u6587\u6863 URL\nOPENID_PROVIDER_URL=http://localhost:9090/realms/openwebui/.well-known/openid-configuration\n\n# (\u53ef\u9009) SSO \u6309\u94ae\u6807\u7b7e\nOAUTH_PROVIDER_NAME=Keycloak\n\n# (\u53ef\u9009) OAuth \u56de\u8c03 URL\nOPENID_REDIRECT_URI=http://localhost:8080/oauth/oidc/callback\n"})}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsxs)(n.strong,{children:["\u4fee\u6539 ",(0,l.jsx)(n.code,{children:".env"})," \u6587\u4ef6\u540e\u91cd\u542f Open WebUI \u670d\u52a1\u5668\u3002"]})}),"\n",(0,l.jsx)(n.h2,{id:"7-http-vs-https",children:"7. HTTP vs. HTTPS"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"HTTP (\u5f00\u53d1/\u6d4b\u8bd5)"}),":","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\u65b9\u6848: ",(0,l.jsx)(n.code,{children:"http://"})]}),"\n",(0,l.jsxs)(n.li,{children:["\u793a\u4f8b: ",(0,l.jsx)(n.code,{children:"http://localhost:9090"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"HTTPS (\u63a8\u8350\u751f\u4ea7)"}),":","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u9700\u8981 Keycloak TLS \u8bbe\u7f6e\u6216\u5e26\u6709 SSL \u7ec8\u6b62\u7684\u53cd\u5411\u4ee3\u7406\u3002"}),"\n"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"bin/kc.sh start --https-port=9090 \\\n --https-key-store=keystore.jks \\\n --https-key-store-password=<password>\n"})}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"8-\u6d4b\u8bd5\u96c6\u6210",children:"8. \u6d4b\u8bd5\u96c6\u6210"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\u8f6c\u5230 ",(0,l.jsx)(n.code,{children:"http://localhost:8080"}),'\u3002\u60a8\u5e94\u8be5\u770b\u5230"\u4f7f\u7528 Keycloak \u7ee7\u7eed"\u6309\u94ae\u3002']}),"\n",(0,l.jsx)(n.li,{children:"\u70b9\u51fb\u8be5\u6309\u94ae\u3002\u60a8\u5e94\u8be5\u88ab\u91cd\u5b9a\u5411\u5230 Keycloak \u767b\u5f55\u9875\u9762\u3002"}),"\n",(0,l.jsxs)(n.li,{children:["\u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"testuser"})," / ",(0,l.jsx)(n.code,{children:"Test1234!"})," \u767b\u5f55\u3002\u60a8\u5e94\u8be5\u6210\u529f\u91cd\u5b9a\u5411\u56de Open WebUI\u3002"]}),"\n"]}),"\n","\n",(0,l.jsx)(n.h2,{id:"9-\u914d\u7f6e-keycloak-\u7ec4\u6620\u5c04",children:"9. \u914d\u7f6e Keycloak \u7ec4\u6620\u5c04"}),"\n",(0,l.jsx)(n.h3,{id:"91-\u6982\u8ff0",children:"9.1. \u6982\u8ff0"}),"\n",(0,l.jsx)(n.p,{children:"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cKeycloak \u5ba2\u6237\u7aef\u4e0d\u5728\u4ee4\u724c\u4e2d\u5305\u542b\u7ec4\u4fe1\u606f\u3002\u6309\u7167\u8fd9\u4e9b\u6b65\u9aa4\u4f20\u9012\u7ec4\u4fe1\u606f\u3002"}),"\n",(0,l.jsx)(n.h3,{id:"92-\u5b9a\u4f4d\u6620\u5c04\u5668\u521b\u5efa",children:"9.2. \u5b9a\u4f4d\u6620\u5c04\u5668\u521b\u5efa"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["\u8f6c\u5230 Keycloak \u7ba1\u7406\u63a7\u5236\u53f0\uff1a",(0,l.jsx)(n.code,{children:"http://localhost:9090/admin"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["\u9009\u62e9 ",(0,l.jsx)(n.code,{children:"openwebui"})," \u57df\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["\u5bfc\u822a\u5230 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef"})," \u5e76\u9009\u62e9 ",(0,l.jsx)(n.code,{children:"open-webui"})," \u5ba2\u6237\u7aef\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["\u8f6c\u5230 ",(0,l.jsx)(n.strong,{children:"\u5ba2\u6237\u7aef\u8303\u56f4"})," \u9009\u9879\u5361\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["\u9009\u62e9\u5c06\u5305\u542b\u7ec4\u4fe1\u606f\u7684\u8303\u56f4\uff08\u4f8b\u5982\uff0c",(0,l.jsx)(n.code,{children:"profile"})," \u6216 ",(0,l.jsx)(n.code,{children:"open-webui-dedicated"}),"\uff09\u3002"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{alt:"scope-client",src:s(86851).A+"",width:"602",height:"330"})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["\u5728\u6240\u9009\u8303\u56f4\u7684\u8be6\u7ec6\u4fe1\u606f\u4e2d\uff0c\u8f6c\u5230 ",(0,l.jsx)(n.strong,{children:"\u6620\u5c04\u5668"})," \u9009\u9879\u5361\u3002"]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"93-\u521b\u5efa\u6620\u5c04\u5668",children:"9.3. \u521b\u5efa\u6620\u5c04\u5668"}),"\n",(0,l.jsxs)(n.p,{children:["\u70b9\u51fb ",(0,l.jsx)(n.strong,{children:"\u521b\u5efa"})," \u6216 ",(0,l.jsx)(n.strong,{children:"\u6dfb\u52a0\u5185\u7f6e"})," \u5f00\u59cb\u521b\u5efa\u65b0\u6620\u5c04\u5668\u3002"]}),"\n",(0,l.jsx)(n.h3,{id:"94-\u6620\u5c04\u5668\u8bbe\u7f6e",children:"9.4. \u6620\u5c04\u5668\u8bbe\u7f6e"}),"\n",(0,l.jsx)(n.p,{children:"\u4f7f\u7528\u9002\u5f53\u7684\u8bbe\u7f6e\u914d\u7f6e\u6620\u5c04\u5668\u4ee5\u5305\u542b\u7ec4\u6210\u5458\u8eab\u4efd\u3002"}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{alt:"mappers-setting-group-client",src:s(78490).A+"",width:"602",he
1ight:"334"})}),"\n",(0,l.jsx)(n.h3,{id:"95-\u4fdd\u5b58\u5e76\u5e94\u7528",children:"9.5. \u4fdd\u5b58\u5e76\u5e94\u7528"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u4fdd\u5b58"})," \u6620\u5c04\u5668\u914d\u7f6e\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u91cd\u542f"})," Open WebUI \u670d\u52a1\u5668\u4ee5\u5e94\u7528\u66f4\u6539\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"96-\u914d\u7f6e-open-webui-\u73af\u5883\u53d8\u91cf",children:"9.6. \u914d\u7f6e Open WebUI \u73af\u5883\u53d8\u91cf"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728\u60a8\u7684 ",(0,l.jsx)(n.code,{children:".env"})," \u6587\u4ef6\u4e2d\u6dfb\u52a0\u6216\u4fee\u6539\u8fd9\u4e9b\u53d8\u91cf\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-env",children:"# \u542f\u7528\u7ec4\u540c\u6b65\nENABLE_OAUTH_GROUP_MANAGEMENT=true\n# (\u53ef\u9009) \u542f\u7528\u5373\u65f6\u7ec4\u521b\u5efa\nENABLE_OAUTH_GROUP_CREATION=true\n# \u4ee4\u724c\u4e2d\u7ec4\u7684\u58f0\u660e\u952e\nOAUTH_GROUPS_CLAIM=groups\n\n"})})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},8780:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/access-setting-client-7c5bcaf414bff922b07d9758b01d8c68.png"},18477:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/create-realm-de05af13ff3f50bf97a21a4636a5eb32.png"},78490:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/mappers-setting-group-client-67d1aad2d0859ae6cc47a525e58f1e35.png"},86851:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/scope-client-f17eea13654c2bbad34085b833f0f1ec.png"},3921:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/select-realm-a61522295d900bbc7f5132dd236f4983.png"},28453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>d});var l=s(96540);const i={},c=l.createContext(i);function r(e){const n=l.useContext(c);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),l.createElement(c.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.