Score:0

Wildfly standalone.xml - ส่งผ่านข้อมูลลับไปยัง KeyCloak SPI จากที่เก็บข้อมูลรับรอง elytron

ธง br

ฉันกำลังย้ายรหัสผ่าน KeyCloak v15 (WildFly v23) จากห้องนิรภัยเก่าไปยังที่เก็บข้อมูลรับรอง elytron มันใช้งานได้ดีสำหรับกรณีการใช้งานมาตรฐาน ใน แบบสแตนด์อโลน.xml, ฉันมี: /เซิร์ฟเวอร์/ส่วนขยาย/ส่วนขยาย:

<extension module="org.wildfly.extension.elytron"/>

/เซิร์ฟเวอร์/โปรไฟล์/ระบบย่อย:

<subsystem xmlns="urn:wildfly:elytron:13.0" final-providers="elytron" disallowed-providers="OracleUcrypto">
    <providers>
        <provider-loader name="elytron" module="org.wildfly.security.elytron"/>
    </providers>
    <audit-logging>
        <file-audit-log name="local-audit" path="audit-log.log" relative-to="jboss.server.log.dir" format="JSON"/>
    </audit-logging>
    <credential-stores>
        <credential-store name="credStore" location="/data/credStore.jceks">
            <implementation-properties>
                <property name="keyStoreType" value="JCEKS"/>
            </implementation-properties>
            <credential-reference clear-text="MASK-123456789;salt123;42"/>
        </credential-store>
    </credential-stores>
</subsystem>

และฉันเข้าถึงรหัสผ่านโดยใช้ /server/profile/subsystem[@xmlns="urn:jboss:domain:jgroups:8.0"]/stacks/stack[@name="tcp"]/auth-protocol/digest-token/shared-secret-reference:

<shared-secret-reference store="credStore" alias="myBlock::mySecret"/>

อย่างไรก็ตาม มีความลับอย่างหนึ่งที่ฉันต้องส่งต่อให้ SPI ในพร็อพเพอร์ตี้ มีความคิดวิธีการทำ? นี่เป็นวิธีของห้องนิรภัยแบบเก่า:

/เซิร์ฟเวอร์/คุณสมบัติระบบ/คุณสมบัติ:

<property name="secret" value="${VAULT::myBlock::mySecret::1}"/>

/server/profile/subsystem[@xmlns="urn:jboss:domain:keycloak-server:1.1"]/spi:

<spi name="mySpi">
    <provider name="file" enabled="true">
        <properties>
            <property name="password" value="${secret}"/>
        </properties>
    </provider>
</spi>
Score:0
ธง br

ฉันต้องเขียน SPI ของเราใหม่เพื่ออ่านเนื้อหาที่เก็บหนังสือรับรอง Elytron:

นำเข้า org.jboss.as.server.CurrentServiceContainer;
นำเข้า org.jboss.msc.service.ServiceController;
นำเข้า org.jboss.msc.service.ServiceName;
นำเข้า org.jboss.msc.service.ServiceRegistry;
นำเข้า org.wildfly.security.credential.PasswordCredential;
นำเข้า org.wildfly.security.credential.store.CredentialStore;
นำเข้า org.wildfly.security.credential.store.CredentialStoreException;
นำเข้า org.wildfly.security.password.Password;
นำเข้า org.wildfly.security.password.interfaces.ClearPassword;
  ส่วนตัวคงที่สตริง getClientSecret (String credentialStore, String secretAlias) {
    ชื่อบริการสุดท้าย SERVICE_NAME_CRED_STORE = ServiceName.of("org", "wildfly", "security", "credential-store");
    ชื่อบริการสุดท้าย sn = ServiceName.of (SERVICE_NAME_CRED_STORE, credentialStore);
    รีจิสทรี ServiceRegistry สุดท้าย = CurrentServiceContainer.getServiceContainer ();
    ServiceController สุดท้าย <?> credStoreService = Registry.getService (sn);
    สุดท้าย CredentialStore cs = (CredentialStore) credStoreService.getValue ();
// ถ้า (!cs.exists (secretAlias, PasswordCredential.class)) {
// โยน CredentialStoreException ใหม่ ("ไม่พบนามแฝง " + secretAlias ​​+ " ในที่เก็บข้อมูลประจำตัว");
// }
    รหัสผ่านสุดท้าย รหัสผ่าน;
    พยายาม {
      รหัสผ่าน = cs.retrieve (secretAlias, PasswordCredential.class).getPassword ();
    } จับ (CredentialStoreException จ) {
      e.printStackTrace();
      ส่งคืน null;
    }
    ถ้า (!(ตัวอย่างรหัสผ่านของ ClearPassword)) {
      โยน classCastException ใหม่ ("รหัสผ่านไม่ใช่ประเภท ClearPassword");
    }
    ส่งคืนรหัสผ่านใหม่ String(((ClearPassword)).getPassword());
  }
Score:0
ธง br

ฉันพบความเป็นไปได้ 2 ประการ:

  1. เขียน SPI ใหม่เพื่อดึงความลับโดยตรงจากที่เก็บข้อมูลรับรอง Elytron ใน Java
  2. ตั้งค่าตัวแปรสภาพแวดล้อมล่วงหน้า (ส่งออก SECRET="$(secret-getter-script)") และใช้ตัวแปรใน แบบสแตนด์อโลน.xml:
<spi name="mySpi">
    <provider name="file" enabled="true">
        <properties>
            <property name="password" value="${env.SECRET}"/>
        </properties>
    </provider>
</spi>
McLayn avatar
br flag
ในท้ายที่สุด การใช้ตัวแปรสภาพแวดล้อมไม่ปลอดภัยเพียงพอสำหรับการใช้งานของเรา และฉันต้องสอน SPI ของเราให้อ่านเนื้อหาที่เก็บข้อมูลประจำตัวของ Elytron

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา