Merge pull request #9139 from jwangyangls/add-oidc-claim

Add oidc group claim in config-auth、member、administrator
This commit is contained in:
jwangyangls 2019-09-20 15:58:31 +08:00 committed by GitHub
commit 3144635ea1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 112 additions and 38 deletions

View File

@ -101,6 +101,7 @@ export class Configuration {
count_per_project: NumberValueItem;
storage_per_project: NumberValueItem;
cfg_expiration: NumberValueItem;
oidc_groups_claim: StringValueItem;
public constructor() {
this.auth_mode = new StringValueItem("db_auth", true);
this.project_creation_restriction = new StringValueItem("everyone", true);
@ -153,6 +154,7 @@ export class Configuration {
this.oidc_client_secret = new StringValueItem('', true);
this.oidc_verify_cert = new BoolValueItem(false, true);
this.oidc_scope = new StringValueItem('', true);
this.oidc_groups_claim = new StringValueItem('', true);
this.count_per_project = new NumberValueItem(-1, true);
this.storage_per_project = new NumberValueItem(-1, true);
}

View File

@ -47,4 +47,5 @@
color: #000;
font-size: .541667rem;
width: 200px;
padding-right: 1rem;
}

View File

@ -150,6 +150,7 @@ export const PROJECT_ROOTS = [
export enum GroupType {
LDAP_TYPE = 1,
HTTP_TYPE = 2
HTTP_TYPE = 2,
OIDC_TYPE = 3
}
export const REFRESH_TIME_DIFFERENCE = 10000;

View File

@ -72,6 +72,9 @@ export class AppConfigService {
public isHttpAuthMode(): boolean {
return this.configurations && this.configurations.auth_mode === CONFIG_AUTH_MODE.HTTP_AUTH;
}
public isOidcMode(): boolean {
return this.configurations && this.configurations.auth_mode === CONFIG_AUTH_MODE.OIDC_AUTH;
}
// Return the reconstructed admiral url
public getAdmiralEndpoint(currentHref: string): string {

View File

@ -29,7 +29,7 @@
<clr-icon shape="users" clrVerticalNavIcon></clr-icon>
{{'SIDE_NAV.SYSTEM_MGMT.USER' | translate}}
</a>
<a *ngIf='isLdapMode' clrVerticalNavLink routerLink="/harbor/groups" routerLinkActive="active">
<a *ngIf='isLdapMode || isHttpAuthMode || isOidcMode' clrVerticalNavLink routerLink="/harbor/groups" routerLinkActive="active">
<clr-icon shape="users" clrVerticalNavIcon></clr-icon>
{{'SIDE_NAV.SYSTEM_MGMT.GROUP' | translate}}
</a>

View File

@ -55,6 +55,7 @@ export class HarborShellComponent implements OnInit, OnDestroy {
searchSub: Subscription;
searchCloseSub: Subscription;
isLdapMode: boolean;
isOidcMode: boolean;
isHttpAuthMode: boolean;
constructor(
@ -69,6 +70,8 @@ export class HarborShellComponent implements OnInit, OnDestroy {
this.isLdapMode = true;
} else if (this.appConfigService.isHttpAuthMode()) {
this.isHttpAuthMode = true;
} else if (this.appConfigService.isOidcMode()) {
this.isOidcMode = true;
}
this.searchSub = this.searchTrigger.searchTriggerChan$.subscribe(searchEvt => {
if (searchEvt && searchEvt.trim() !== "") {

View File

@ -1,24 +1,28 @@
<form #authConfigFrom="ngForm" class="clr-form clr-form-horizontal">
<clr-select-container>
<label >{{'CONFIG.AUTH_MODE' | translate}}
<clr-tooltip>
<clr-icon clrTooltipTrigger shape="info-circle" size="24"></clr-icon>
<clr-tooltip-content clrPosition="top-right" clrSize="lg" *clrIfOpen>
<span>{{'CONFIG.TOOLTIP.AUTH_MODE' | translate}}</span>
</clr-tooltip-content>
</clr-tooltip>
<div class="clr-form-control">
<label for="authMode" class="clr-control-label">
{{'CONFIG.AUTH_MODE' | translate}}
<clr-tooltip>
<clr-icon clrTooltipTrigger shape="info-circle" size="24"></clr-icon>
<clr-tooltip-content clrPosition="top-right" clrSize="lg" *clrIfOpen>
<span>{{'CONFIG.TOOLTIP.AUTH_MODE' | translate}}</span>
</clr-tooltip-content>
</clr-tooltip></label>
<div class="clr-control-container">
<div class="clr-select-wrapper">
<select class="clr-select" id="authMode" name="authMode" (change)="handleOnChange($event)"
[disabled]="disabled(currentConfig.auth_mode)" [(ngModel)]="currentConfig.auth_mode.value">
<option value="db_auth">{{'CONFIG.AUTH_MODE_DB' | translate }}</option>
<option value="ldap_auth">{{'CONFIG.AUTH_MODE_LDAP' | translate }}</option>
<option value="uaa_auth">{{'CONFIG.AUTH_MODE_UAA' | translate }}</option>
<option *ngIf="showHttpAuth" value="http_auth">{{'CONFIG.AUTH_MODE_HTTP' | translate }}</option>
<option value="oidc_auth">{{'CONFIG.AUTH_MODE_OIDC' | translate }}</option>
</select>
</div>
<a href="https://openid.net/connect/" *ngIf="currentConfig?.auth_mode?.value==='oidc_auth'" target="_blank"
class="more-info-link">{{ 'BUTTON.MORE_INFO' | translate }}</a>
</label>
<select clrSelect id="authMode" name="authMode" (change)="handleOnChange($event)"
[disabled]="disabled(currentConfig.auth_mode)" [(ngModel)]="currentConfig.auth_mode.value">
<option value="db_auth">{{'CONFIG.AUTH_MODE_DB' | translate }}</option>
<option value="ldap_auth">{{'CONFIG.AUTH_MODE_LDAP' | translate }}</option>
<option value="uaa_auth">{{'CONFIG.AUTH_MODE_UAA' | translate }}</option>
<option *ngIf="showHttpAuth" value="http_auth">{{'CONFIG.AUTH_MODE_HTTP' | translate }}</option>
<option value="oidc_auth">{{'CONFIG.AUTH_MODE_OIDC' | translate }}</option>
</select>
</clr-select-container>
</div>
</div>
<section *ngIf="showUAA">
<clr-input-container>
@ -343,6 +347,21 @@
[disabled]="disabled(currentConfig.oidc_client_secret)" />
<clr-control-error>{{'TOOLTIP.ITEM_REQUIRED' | translate}}</clr-control-error>
</clr-input-container>
<clr-input-container>
<label for="oidcGroupClaim">{{'CONFIG.OIDC.GROUP_CLAIM_NAME' | translate}}
<clr-tooltip>
<clr-icon clrTooltipTrigger shape="info-circle" size="24"></clr-icon>
<clr-tooltip-content clrPosition="top-right" clrSize="lg" *clrIfOpen>
<span>{{'TOOLTIP.OIDC_GROUP_CLAIM' | translate}}</span>
</clr-tooltip-content>
</clr-tooltip>
</label>
<input clrInput name="oidcGroupClaim" type="text" #oidcClientSecretInput="ngModel"
[(ngModel)]="currentConfig.oidc_groups_claim.value" id="oidcGroupClaim" size="40"
pattern="^\w{1,256}$" [disabled]="disabled(currentConfig.oidc_groups_claim)" />
<clr-control-error>{{'TOOLTIP.OIDC_GROUP_CLAIM_WARNING' | translate}}</clr-control-error>
</clr-input-container>
<clr-input-container>
<label class="required" for="oidcScope">{{'CONFIG.OIDC.SCOPE' | translate}}
<clr-tooltip>

View File

@ -4,7 +4,7 @@
margin-top: 1rem;
}
.more-info-link {
color: #101010;
padding-left: 1rem;
}
.ml-04 {
margin-left: 0.4rem;

View File

@ -1,6 +1,7 @@
<clr-modal [(clrModalOpen)]="opened" [clrModalStaticBackdrop]="true" [clrModalClosable]="false">
<h3 class="modal-title" *ngIf="mode === 'create' && isLdapMode">{{'GROUP.IMPORT_LDAP_GROUP' | translate}}</h3>
<h3 class="modal-title" *ngIf="mode === 'create' && isHttpAuthMode">{{'GROUP.IMPORT_HTTP_GROUP' | translate}}</h3>
<h3 class="modal-title" *ngIf="mode === 'create' && isOidcMode">{{'GROUP.IMPORT_OIDC_GROUP' | translate}}</h3>
<h3 class="modal-title" *ngIf="mode !== 'create'">{{'GROUP.EDIT' | translate}}</h3>
<div class="modal-body">
@ -16,7 +17,7 @@
<label class="clr-control-label" for="type">{{'GROUP.TYPE' | translate}}</label>
<label class="padding-left-6" id="type">{{'GROUP.LDAP_TYPE' | translate}}</label>
</div>
<clr-input-container *ngIf="isLdapMode">
<clr-input-container>
<label for="group_name" class="required">{{ 'GROUP.NAME' | translate}}</label>
<input clrInput type="text" id="group_name" name="group_name" required
[(ngModel)]="group.group_name" #groupName="ngModel" />

View File

@ -34,6 +34,7 @@ export class AddGroupModalComponent implements OnInit, OnDestroy {
isLdapMode: boolean;
isHttpAuthMode: boolean;
isOidcMode: boolean;
constructor(
private session: SessionService,
private msgHandler: MessageHandlerService,
@ -49,7 +50,10 @@ export class AddGroupModalComponent implements OnInit, OnDestroy {
if (this.appConfigService.isHttpAuthMode()) {
this.isHttpAuthMode = true;
}
this.group = new UserGroup(this.isLdapMode ? GroupType.LDAP_TYPE : GroupType.HTTP_TYPE);
if (this.appConfigService.isOidcMode()) {
this.isOidcMode = true;
}
this.group = new UserGroup(this.isLdapMode ? GroupType.LDAP_TYPE : this.isHttpAuthMode ? GroupType.HTTP_TYPE : GroupType.OIDC_TYPE);
}
@ -112,7 +116,7 @@ export class AddGroupModalComponent implements OnInit, OnDestroy {
}
resetGroup() {
this.group = new UserGroup(this.isLdapMode ? GroupType.LDAP_TYPE : GroupType.HTTP_TYPE);
this.group = new UserGroup(this.isLdapMode ? GroupType.LDAP_TYPE : this.isHttpAuthMode ? GroupType.HTTP_TYPE : GroupType.OIDC_TYPE);
this.groupForm.reset();
}
}

View File

@ -161,6 +161,8 @@ export class GroupComponent implements OnInit, OnDestroy {
return 'GROUP.LDAP_TYPE';
} else if (type === GroupType.HTTP_TYPE) {
return 'GROUP.HTTP_TYPE';
} else if (type === GroupType.OIDC_TYPE) {
return 'GROUP.OIDC_TYPE';
} else {
return 'UNKNOWN';
}

View File

@ -30,10 +30,11 @@ import { InlineAlertComponent } from '../../../shared/inline-alert/inline-alert.
import { UserService } from '../../../user/user.service';
import { errorHandler as errorHandFn, PROJECT_ROOTS, ProjectRootInterface } from "@harbor/ui";
import { errorHandler as errorHandFn, PROJECT_ROOTS, ProjectRootInterface, GroupType } from "@harbor/ui";
import { MemberService } from '../member.service';
import { UserGroup } from "./../../../group/group";
import { AppConfigService } from "../../../app-config.service";
@Component({
@ -66,10 +67,13 @@ export class AddHttpAuthGroupComponent implements OnInit {
checkOnGoing: boolean = false;
constructor(private memberService: MemberService,
private appConfigService: AppConfigService,
private translateService: TranslateService) { }
ngOnInit(): void {
this.projectRoots = PROJECT_ROOTS;
this.member_group = new UserGroup(this.appConfigService.isHttpAuthMode() ? GroupType.HTTP_TYPE : GroupType.OIDC_TYPE);
}
createGroupAsMember() {

View File

@ -16,7 +16,7 @@
<button class="btn btn-sm btn-secondary" (click)="openAddMemberModal()" [disabled]="!hasCreateMemberPermission">
<span><clr-icon shape="plus" size="16"></clr-icon>&nbsp;{{'MEMBER.USER' | translate }}</span>
</button>
<button class="btn btn-sm btn-secondary" (click)="openAddGroupModal()" [disabled]="!hasCreateMemberPermission || !(isLdapMode || isHttpAuthMode)">
<button class="btn btn-sm btn-secondary" (click)="openAddGroupModal()" [disabled]="!hasCreateMemberPermission || !(isLdapMode || isHttpAuthMode || isOidcMode)">
<span><clr-icon shape="plus" size="16"></clr-icon>&nbsp;{{'MEMBER.LDAP_GROUP' | translate}}</span>
</button>
<clr-dropdown [clrCloseMenuOnItemClick]="false" class="btn btn-sm btn-link" clrDropdownTrigger>

View File

@ -64,6 +64,7 @@ export class MemberComponent implements OnInit, OnDestroy {
batchChangeRoleInfos = {};
isLdapMode: boolean;
isHttpAuthMode: boolean;
isOidcMode: boolean;
@ViewChild(AddMemberComponent, {static: false})
addMemberComponent: AddMemberComponent;
@ -121,6 +122,9 @@ export class MemberComponent implements OnInit, OnDestroy {
if (this.appConfigService.isHttpAuthMode()) {
this.isHttpAuthMode = true;
}
if (this.appConfigService.isOidcMode()) {
this.isOidcMode = true;
}
}
doSearch(searchMember: string) {
this.searchMember = searchMember;

View File

@ -97,7 +97,9 @@
"OIDC_NAME": "The name of the OIDC provider.",
"OIDC_ENDPOINT": "The URL of an OIDC-complaint server.",
"OIDC_SCOPE": "The scope sent to OIDC server during authentication. It has to contain “openid”, and “offline_access”. If you are using google, please remove “offline_access” from this field.",
"OIDC_VERIFYCERT": "Uncheck this box if your OIDC server is hosted via self-signed certificate."
"OIDC_VERIFYCERT": "Uncheck this box if your OIDC server is hosted via self-signed certificate.",
"OIDC_GROUP_CLAIM": "The name of Claim in the ID token whose value is the list of group names.",
"OIDC_GROUP_CLAIM_WARNING": "It can only contain letters, numbers, underscores, and the input length is no more than 256 characters."
},
"PLACEHOLDER": {
"CURRENT_PWD": "Enter current password",
@ -374,6 +376,7 @@
"GROUPS": "Groups",
"IMPORT_LDAP_GROUP": "Import LDAP Group",
"IMPORT_HTTP_GROUP": "New HTTP Group",
"IMPORT_OIDC_GROUP": "New OIDC Group",
"ADD": "New Group",
"EDIT": "Edit",
"DELETE": "Delete",
@ -387,6 +390,7 @@
"EDIT_GROUP_SUCCESS": "Edit group success",
"LDAP_TYPE": "LDAP",
"HTTP_TYPE": "HTTP",
"OIDC_TYPE": "OIDC",
"OF": "of",
"ITEMS": "items",
"NEW_MEMBER": "New Group Member",
@ -857,7 +861,8 @@
"OIDC_VERIFYCERT": "Verify Certificate",
"OIDC_SETNAME": "Set OIDC Username",
"OIDC_SETNAMECONTENT": "You must create a Harbor username the first time when authenticating via a third party(OIDC).This will be used within Harbor to be associated with projects, roles, etc.",
"OIDC_USERNAME": "Username"
"OIDC_USERNAME": "Username",
"GROUP_CLAIM_NAME": "Group Claim Name"
},
"SCANNING": {
"TRIGGER_SCAN_ALL_SUCCESS": "Trigger scan all successfully!",

View File

@ -97,7 +97,9 @@
"OIDC_NAME": "El nombre de la OIDC proveedor.",
"OIDC_ENDPOINT": "La dirección URL de un servidor OIDC denuncia.",
"OIDC_SCOPE": "El ámbito de aplicación enviada a OIDC Server durante la autenticación.Tiene que contener 'Openid', y 'offline_access'.Si usted esta usando Google, por favor quitar 'offline_access' de este campo",
"OIDC_VERIFYCERT": "Desmarque esta casilla si tu OIDC servidor está alojado a través de certificado autofirmado."
"OIDC_VERIFYCERT": "Desmarque esta casilla si tu OIDC servidor está alojado a través de certificado autofirmado.",
"OIDC_GROUP_CLAIM": "The name of Claim in the ID token whose value is the list of group names.",
"OIDC_GROUP_CLAIM_WARNING": "It can only contain letters, numbers, underscores, and the input length is no more than 256 characters."
},
"PLACEHOLDER": {
"CURRENT_PWD": "Introduzca la contraseña actual",
@ -375,6 +377,7 @@
"GROUPS": "Groups",
"IMPORT_LDAP_GROUP": "Import LDAP Group",
"IMPORT_HTTP_GROUP": "New HTTP Group",
"IMPORT_OIDC_GROUP": "New OIDC Group",
"ADD": "Add",
"EDIT": "Edit",
"DELETE": "Delete",
@ -387,6 +390,7 @@
"EDIT_GROUP_SUCCESS": "Edit group success",
"LDAP_TYPE": "LDAP",
"HTTP_TYPE": "HTTP",
"OIDC_TYPE": "OIDC",
"OF": "of",
"ITEMS": "items",
"NEW_MEMBER": "New Group Member",
@ -856,7 +860,8 @@
"OIDC_VERIFYCERT": "Verificar certificado",
"OIDC_SETNAME": "Set OIDC nombre de usuario",
"OIDC_SETNAMECONTENT": "Usted debe crear un Harbor nombre de usuario la primera vez cuando la autenticación a través de un tercero (OIDC). Esta será usada en Harbor para ser asociados con proyectos, funciones, etc.",
"OIDC_USERNAME": "Usuario"
"OIDC_USERNAME": "Usuario",
"GROUP_CLAIM_NAME": "Group Claim Name"
},
"SCANNING": {
"TRIGGER_SCAN_ALL_SUCCESS": "Trigger scan all successfully!",

View File

@ -92,7 +92,9 @@
"OIDC_NAME": "le nom du fournisseur de oidc.",
"OIDC_ENDPOINT": "l'url d'un serveur oidc plainte.",
"OIDC_SCOPE": "le champ envoyés au serveur au cours oidc l'authentification.il doit contenir 'openid', et 'offline_access'.si vous utilisez google, veuillez supprimer 'offline_access' dans ce domaine",
"OIDC_VERIFYCERT": "décocher cette case si votre oidc serveur est accueilli par auto - certificat signé."
"OIDC_VERIFYCERT": "décocher cette case si votre oidc serveur est accueilli par auto - certificat signé.",
"OIDC_GROUP_CLAIM": "The name of Claim in the ID token whose value is the list of group names.",
"OIDC_GROUP_CLAIM_WARNING": "It can only contain letters, numbers, underscores, and the input length is no more than 256 characters."
},
"PLACEHOLDER": {
"CURRENT_PWD": "Entrez le mot de passe actuel",
@ -367,6 +369,7 @@
"GROUPS": "Groups",
"IMPORT_LDAP_GROUP": "Import LDAP Group",
"IMPORT_HTTP_GROUP": "New HTTP Group",
"IMPORT_OIDC_GROUP": "New OIDC Group",
"ADD": "Add",
"EDIT": "Edit",
"DELETE": "Delete",
@ -380,6 +383,7 @@
"EDIT_GROUP_SUCCESS": "Edit group success",
"LDAP_TYPE": "LDAP",
"HTTP_TYPE": "HTTP",
"OIDC_TYPE": "OIDC",
"OF": "of",
"ITEMS": "items",
"NEW_MEMBER": "New Group Member",
@ -830,7 +834,8 @@
"OIDC_VERIFYCERT": "Certificat vérifier",
"OIDC_SETNAME": "Ensemble OIDC nom d'utilisateur",
"OIDC_SETNAMECONTENT": "vous devez créer un Harbor identifiant la première fois lors de la vérification par une tierce partie (oidc). il sera utilisé au sein de port à être associés aux projets, des rôles, etc.",
"OIDC_USERNAME": "d'utilisateur"
"OIDC_USERNAME": "d'utilisateur",
"GROUP_CLAIM_NAME": "Group Claim Name"
},
"SCANNING": {
"TRIGGER_SCAN_ALL_SUCCESS": "Déclenchement d'analyse globale avec succès !",

View File

@ -95,7 +95,9 @@
"OIDC_NAME": "O Nome do prestador de oidc.",
"OIDC_ENDPOINT": "A URL de um servidor oidc denúncia.",
"OIDC_SCOPE": "O âmbito de aplicação enviada Ao servidor oidc Durante a autenticação.TEM que conter 'openid' e 'offline_access'.Se você está usando o Google, por favor remova 'offline_access' desse Campo.",
"OIDC_VERIFYCERT": "Desmarque esta opção se o SEU servidor está hospedado oidc via self - signed certificate."
"OIDC_VERIFYCERT": "Desmarque esta opção se o SEU servidor está hospedado oidc via self - signed certificate.",
"OIDC_GROUP_CLAIM": "The name of Claim in the ID token whose value is the list of group names.",
"OIDC_GROUP_CLAIM_WARNING": "It can only contain letters, numbers, underscores, and the input length is no more than 256 characters."
},
"PLACEHOLDER": {
"CURRENT_PWD": "Insira a senha atual",
@ -342,6 +344,7 @@
"GROUPS": "Grupos",
"IMPORT_LDAP_GROUP": "Importar grupo do LDAP",
"IMPORT_HTTP_GROUP": "New HTTP Group",
"IMPORT_OIDC_GROUP": "New OIDC Group",
"ADD": "Novo Grupo",
"EDIT": "Editar",
"DELETE": "Remover",
@ -355,6 +358,7 @@
"EDIT_GROUP_SUCCESS": "Grupo editado com sucesso",
"LDAP_TYPE": "LDAP",
"HTTP_TYPE": "HTTP",
"OIDC_TYPE": "OIDC",
"OF": "de",
"ITEMS": "itens",
"NEW_MEMBER": "New Group Member",
@ -851,7 +855,8 @@
"OIDC_VERIFYCERT": "Verificar Certificado",
"OIDC_SETNAME": "Definir o Utilizador OIDC",
"OIDC_SETNAMECONTENT": "Você deve Criar um Nome de usuário do Porto a primeira vez que autenticar através de um terceiro (OIDC). Isto será usado Dentro de Harbor para ser associado a projetos, papéis, etc.",
"OIDC_USERNAME": "Utilizador"
"OIDC_USERNAME": "Utilizador",
"GROUP_CLAIM_NAME": "Group Claim Name"
},
"SCANNING": {
"TRIGGER_SCAN_ALL_SUCCESS": "Disparo de análise geral efetuado com sucesso!",

View File

@ -97,7 +97,9 @@
"OIDC_NAME": "OIDC sağlayıcısının adı.",
"OIDC_ENDPOINT": "Bir OIDC şikayet sunucusunun URL'si.",
"OIDC_SCOPE": "Kapsam, kimlik doğrulama sırasında OIDC sunucusuna gönderildi. “Openid” ve “offline_access” içermelidir. Google kullanıyorsanız, lütfen “offline_access“'i bu alandan kaldırın.",
"OIDC_VERIFYCERT": "OIDC sunucunuz kendinden imzalı sertifika ile barındırılıyorsa bu kutunun işaretini kaldırın."
"OIDC_VERIFYCERT": "OIDC sunucunuz kendinden imzalı sertifika ile barındırılıyorsa bu kutunun işaretini kaldırın.",
"OIDC_GROUP_CLAIM": "The name of Claim in the ID token whose value is the list of group names.",
"OIDC_GROUP_CLAIM_WARNING": "It can only contain letters, numbers, underscores, and the input length is no more than 256 characters."
},
"PLACEHOLDER": {
"CURRENT_PWD": "Güncel şifrenizi giriniz",
@ -374,6 +376,7 @@
"GROUPS": "Gruplar",
"IMPORT_LDAP_GROUP": "LDAP Grubunu İçe Aktar",
"IMPORT_HTTP_GROUP": "Yeni HTTP Grubu",
"IMPORT_OIDC_GROUP": "New OIDC Group",
"ADD": "Yeni Grup",
"EDIT": "Düzenle",
"DELETE": "Sil",
@ -387,6 +390,7 @@
"EDIT_GROUP_SUCCESS": "Grup başarıyla düzenlendi",
"LDAP_TYPE": "LDAP",
"HTTP_TYPE": "HTTP",
"OIDC_TYPE": "OIDC",
"OF": "of",
"ITEMS": "madde",
"NEW_MEMBER": "Yeni grup Üyesi",
@ -856,7 +860,8 @@
"OIDC_VERIFYCERT": "Sertifikayı Doğrula",
"OIDC_SETNAME": "OIDC Kullanıcı Adını Ayarla",
"OIDC_SETNAMECONTENT": "Üçüncü tarafla (OIDC) kimlik doğrulaması yaparken ilk kez bir Harbor kullanıcı adı oluşturmalısınız. Bu, harbor projeler, roller vb. ile ilişkilendirilmek üzere kullanılacaktır.",
"OIDC_USERNAME": "Kullanıcı Adı"
"OIDC_USERNAME": "Kullanıcı Adı",
"GROUP_CLAIM_NAME": "Group Claim Name"
},
"SCANNING": {
"TRIGGER_SCAN_ALL_SUCCESS": "Tümünü başarılı bir şekilde tara!",

View File

@ -96,7 +96,9 @@
"OIDC_NAME": "OIDC提供商的名称。",
"OIDC_ENDPOINT": "OIDC服务器的地址。",
"OIDC_SCOPE": "在身份验证期间发送到OIDC服务器的scope。它必须包含“openid”和“offline_access”。如果您使用Google请从此字段中删除“脱机访问”。",
"OIDC_VERIFYCERT": "如果您的OIDC服务器是通过自签名证书托管的请取消选中此框。"
"OIDC_VERIFYCERT": "如果您的OIDC服务器是通过自签名证书托管的请取消选中此框。",
"OIDC_GROUP_CLAIM": "ID和token中的Claim名称在组的名称列表中。",
"OIDC_GROUP_CLAIM_WARNING": "它只能包含字母、数字、下划线,且输入长度不超过256字符。"
},
"PLACEHOLDER": {
"CURRENT_PWD": "输入当前密码",
@ -373,6 +375,7 @@
"GROUPS": "组",
"IMPORT_LDAP_GROUP": "导入LDAP组",
"IMPORT_HTTP_GROUP": "新建HTTP组",
"IMPORT_OIDC_GROUP": "新建 OIDC 组",
"ADD": "新增",
"EDIT": "编辑",
"DELETE": "删除",
@ -386,6 +389,7 @@
"EDIT_GROUP_SUCCESS": "修改组成功",
"LDAP_TYPE": "LDAP",
"HTTP_TYPE": "HTTP",
"OIDC_TYPE": "OIDC",
"OF": "共计",
"ITEMS": "条记录",
"NEW_MEMBER": "新建组成员",
@ -856,7 +860,8 @@
"OIDC_VERIFYCERT": "验证证书",
"OIDC_SETNAME": "设置OIDC用户名",
"OIDC_SETNAMECONTENT": "在通过第三方OIDC进行身份验证时您必须第一次创建一个Harbor用户名。这将在端口中用于与项目、角色等关联。",
"OIDC_USERNAME": "用户名"
"OIDC_USERNAME": "用户名",
"GROUP_CLAIM_NAME": "组名称"
},
"SCANNING": {
"TRIGGER_SCAN_ALL_SUCCESS": "启动扫描所有镜像任务成功!",