mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-22 18:25:56 +01:00
Add oidc group claim
1. add oidc group claim in configration page 2. add oidc group-page in user page,you can go to it through clicking add-group button; 3. add oidc list page in administrator ,admin can go to this page Signed-off-by: Yogi_Wang <yawang@vmware.com>
This commit is contained in:
parent
5ffba4a6f5
commit
63f135337e
@ -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);
|
||||
}
|
||||
|
@ -47,4 +47,5 @@
|
||||
color: #000;
|
||||
font-size: .541667rem;
|
||||
width: 200px;
|
||||
padding-right: 1rem;
|
||||
}
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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>
|
||||
|
@ -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() !== "") {
|
||||
|
@ -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>
|
||||
|
@ -4,7 +4,7 @@
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.more-info-link {
|
||||
color: #101010;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
.ml-04 {
|
||||
margin-left: 0.4rem;
|
||||
|
@ -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" />
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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';
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -16,7 +16,7 @@
|
||||
<button class="btn btn-sm btn-secondary" (click)="openAddMemberModal()" [disabled]="!hasCreateMemberPermission">
|
||||
<span><clr-icon shape="plus" size="16"></clr-icon> {{'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> {{'MEMBER.LDAP_GROUP' | translate}}</span>
|
||||
</button>
|
||||
<clr-dropdown [clrCloseMenuOnItemClick]="false" class="btn btn-sm btn-link" clrDropdownTrigger>
|
||||
|
@ -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;
|
||||
|
@ -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!",
|
||||
|
@ -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!",
|
||||
|
@ -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 !",
|
||||
|
@ -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!",
|
||||
|
@ -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!",
|
||||
|
@ -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": "启动扫描所有镜像任务成功!",
|
||||
|
Loading…
Reference in New Issue
Block a user