Wgrywanie wielu użytkowników
Użyj FoxIDs Seed Tool, aby załadować użytkowników z pliku CSV do środowiska FoxIDs jako użytkowników wewnętrznych. Każdego użytkownika można przesłać z:
- Brakiem hasła, do logowania bezhasłowego kodem jednorazowym przez e-mail lub SMS.
- Brakiem hasła i obowiązkiem wybrania go przy pierwszym logowaniu, potwierdzonym przez e-mail lub SMS.
- Znanym hasłem jawnym, które Seed Tool domyślnie haszuje przed przesłaniem.
- Wstępnie obliczonym skrótem hasła FoxIDs i oddzielną solą.
- Skrótem hasła Auth0 bcrypt, pozwalającym zachować dotychczasowe hasło.
Control API akceptuje do 1000 użytkowników na żądanie, z których najwyżej 100 może zawierać jawne hasła. Wstępnie obliczone skróty wliczają się do limitu 1000 użytkowników. Seed Tool używa partii do 1000 użytkowników z domyślnym haszowaniem po stronie klienta. Większe pliki przesyła w wielu partiach. Można też bezpośrednio używać operacji użytkowników Control API.
Przykładowy czas wgrywania dla 50 000 użytkowników
| Scenariusz | Użytkownicy | Rozmiar partii | Przybliżony czas |
|---|---|---|---|
| Bez haseł | 50 000 | 1 000 | ~2 minuty |
| Z hasłami | 50 000 | 100 | ~2 godziny |
| Hashe haseł wyliczone po stronie klienta | 50 000 | 1 000 | ~5 minut |
Czasy są przybliżone i zależą od komputera klienta, sieci i infrastruktury.
Wgrywanie użytkowników z hasłami trwa dłużej, ponieważ dla każdego użytkownika trzeba obliczyć hash hasła, a ta operacja jest celowo czasochłonna ze względów bezpieczeństwa. Czas wgrywania można skrócić, obliczając hashe haseł po stronie klienta przed wgraniem użytkowników.
Wgrywanie za pomocą seed tool
Seed Tool w tools/FoxIDs.SeedTool odczytuje plik CSV i zbiorczo przesyła jego użytkowników do skonfigurowanego środowiska FoxIDs przez Control API. Ustaw ścieżkę pliku w SeedSettings.UsersSvcPath i wybierz U, aby przesłać dane. Narzędzie obsługuje też zbiorcze usuwanie użytkowników.
Domyślnie Seed Tool oblicza skróty haseł dla haseł jawnych przed przesłaniem. Dostarczone skróty FoxIDs lub bcrypt są przesyłane bez zmian, gdy
Passwordjest puste lub pominięte.
Plik CSV
Zapisz plik CSV jako UTF-8, rozdzielając pola znakiem ;. Tekst może opcjonalnie znajdować się w cudzysłowie. Parser dzieli po średnikach, więc pola nie mogą zawierać średników ani podziałów wiersza, nawet w cudzysłowach.
Przykładowe pliki CSV znajdziesz tutaj. (Na przykład zobacz znaki UTF-8 w oświadczeniach w pliku password-claims-3-test-users.csv, demonstrujące obsługę wielu języków / znaków rozszerzonych.)
Pierwszy wiersz pliku CSV to nagłówki wrażliwe na wielkość liter. Możesz wybrać wszystkie nagłówki lub ich podzbiór i zmienić kolejność nagłówków. Nagłówki:
- Phone
- Username
- ConfirmAccount
- EmailVerified
- PhoneVerified
- Password
- PasswordHashAlgorithm
- PasswordHash
- PasswordHashSalt
- ChangePassword
- PasswordLastChanged
- SetPasswordEmail
- SetPasswordSms
- DisableAccount
- Claims
- RequireMultiFactor
Liczba nagłówków i elementów w każdej linii musi się zgadzać.
Ten przykład przesyła użytkownika bezhasłowego. Pomiń Password i wszystkie kolumny skrótu hasła oraz pozostaw SetPasswordEmail i SetPasswordSms jako false. Włącz logowanie bezhasłowe z odpowiednim dostawcą e-mail lub SMS. Zachowaj znany stan weryfikacji każdego użytkownika.
Email;EmailVerified;SetPasswordEmail;SetPasswordSms
passwordless@example.com;true;false;false
Ten przykład CSV używa nagłówków Email i SetPasswordEmail do przesłania użytkowników, którzy przy pierwszym logowaniu muszą wybrać hasło z potwierdzeniem przez e-mail.
Adres e-mail jest następnie oznaczany jako zweryfikowany.
Email;SetPasswordEmail
u1@somedomain.test;true
u2@somedomain.test;true
u3@somedomain.test;true
Ten przykład CSV zawiera nazwę użytkownika i oznacza podany adres e-mail oraz numer telefonu jako zweryfikowane. Hasła są ustawiane kodem potwierdzającym przez e-mail lub SMS.
Email;Phone;Username;EmailVerified;PhoneVerified;SetPasswordEmail;SetPasswordSms
u1@somedomain.test;;u1;true;true;true;false
;+4422222222;u2;true;true;false;true
u3@somedomain.test;+4433333333;u3;true;true;true;false
Ten przykład CSV przesyła użytkowników z jawnymi hasłami i oświadczeniami. Ostatni użytkownik jest przesyłany jako wyłączony.
Email;Phone;Username;ConfirmAccount;EmailVerified;PhoneVerified;Password;ChangePassword;SetPasswordEmail;SetPasswordSms;DisableAccount;Claims;RequireMultiFactor
u1@somedomain.test;+4411111111;u1;false;true;true;"My1Password!";false;false;false;false;"[{""Claim"": ""role"", ""Values"": [""admin""]}]";false
u2@somedomain.test;+4422222222;u2;false;true;true;"My2Password!";true;false;false;false;"[{""Claim"": ""role"", ""Values"": [""admin""]}, {""Claim"": ""customer_id"", ""Values"": [""1234""]}]";true
u3@somedomain.test;+4433333333;u3;false;true;true;"My3Password!";false;false;false;true;"[{""Claim"": ""role"", ""Values"": [""admin"", ""user""]}]";false
Jeśli podajesz wstępnie obliczone skróty, użyj kolumn PasswordHashAlgorithm i PasswordHash, a Password pozostaw puste (lub usuń). Dołącz PasswordHashSalt dla P2HS512:10; pomiń je dla bcrypt, którego pełny ciąg skrótu zawiera sól. Zobacz obsługiwane formaty importu haseł. Opcjonalnie możesz zachować pierwotny czas zmiany hasła przez PasswordLastChanged (sekundy Unix). Gdy hasło lub skrót podano bez PasswordLastChanged, przesyłanie zapisuje bieżący czas.
Hasła i oświadczenia należy dodawać z notacją ;"";. Jeśli hasło zawiera znak ", jest on escapowany, np. hasło My"Password staje się ;"My""Password";.
Oświadczenia są dodawane jako struktura JSON bez podziałów wierszy, a znaki " są escapowane.
[
{ "Claim": "role", "Values": ["admin", "user"] },
{ "Claim": "customer_id", "Values": ["1234"] }
]
Import skrótów haseł Auth0 bcrypt
Przekształć sprawdzone dane użytkowników Auth0 i dopasowane skróty haseł w format CSV Seed Tool. Umieść każdą pełną wartość Auth0 passwordHash w PasswordHash i ustaw PasswordHashAlgorithm na bcrypt. Pomiń Password i PasswordHashSalt; bcrypt zawiera sól w ciągu skrótu.
Na przykład to syntetyczne konto testowe używa formatu Auth0 $2b$10$:
Email;EmailVerified;PasswordHashAlgorithm;PasswordHash;SetPasswordEmail;SetPasswordSms;ChangePassword;DisableAccount
auth0.alice@example.com;true;bcrypt;$2b$10$..CA.uOD/eaGAOmJB.yMBu3YunYvFEoaS5IJZ/wiqfQ/EWx.HaqjC;false;false;false;false
Repozytorium źródłowe zawiera tools/FoxIDs.SeedTool/user_upload_csv_files/auth0-bcrypt-3-test-users.csv z syntetycznymi skrótami o kosztach 10 i 12, polami skrótów z cudzysłowami i bez oraz wyłączonym kontem. Te skróty testowe używają hasła QAZ!234wsx. Przed migracją zastąp przykładowe dane sprawdzonymi użytkownikami i ich własnymi skrótami.
Ustaw UsersSvcPath na przekonwertowany plik CSV, a następnie uruchom Seed Tool i wybierz U. Pozostaw flagi ustawiania i zmiany hasła jako false, jeśli użytkownicy mają zachować dotychczasowe hasła, i włącz logowanie hasłem w metodzie uwierzytelniania Login. Możesz wypróbować import w środowisku testowym i zalogować się pierwotnym hasłem zaimportowanego użytkownika.
Zobacz Migracja z Auth0 do FoxIDs, aby poznać eksport, dopasowywanie skrótów do użytkowników, obsługiwane formaty i mapowanie kont.
Pobierz i skonfiguruj seed tool
Najpierw pobierz plik FoxIDs.SeedTool-x.x.x-win-x64.zip dla Windows lub FoxIDs.SeedTool-x.x.x-linux-x64.zip dla Linux z wydania FoxIDs i rozpakuj seed tool.
Seed tool jest konfigurowany w pliku appsettings.json.
Dostęp do wgrywania użytkowników jest nadawany w Twoim środowisku master.
Utwórz klienta OAuth 2.0 seed tool w FoxIDs Control Client:
To przyzna seed tool pełny dostęp do Twojego tenanta; dla minimalnych uprawnień zobacz Uprawnienia dostępu Control API.
- Zaloguj się do swojego tenanta (w self-hosted: główny tenant)
- Wybierz środowisko master (w górnym selektorze środowiska)
- Wybierz kartę Applications
- Kliknij New Application
- Kliknij Backend Application
- Wybierz Show advanced
- Dodaj Name np.
Seed tool - Zmień Client ID na
foxids_seed - Kliknij Register
- Zapamiętaj Authority.
- Zapamiętaj Client secret.
- Kliknij Close
- Kliknij aplikację na liście, aby ją otworzyć
- W sekcji Resource and scopes
- Usuń zaznaczenie z Default resource 'foxids_seed' for the application itself
- Kliknij Add Resource and scope i dodaj zasób
foxids_control_api - Następnie kliknij Add Scope i dodaj zakres
foxids:tenant
- Wybierz Show advanced
- W sekcji Issue claims
- Kliknij Add Claim i dodaj oświadczenie
role - Następnie kliknij Add Value i dodaj wartość oświadczenia
foxids:tenant
- Kliknij Add Claim i dodaj oświadczenie
- Kliknij Update

Dodaj endpoint FoxIDs Control API oraz tenant i environment, a także Authority, Client secret oraz ścieżkę pliku CSV do konfiguracji seed tool.
"SeedSettings": {
"FoxIDsControlEndpoint": "https://control.foxids.com", // self-hosted "https://control.yyyyxxxx.com" or local development https://localhost:44331
"Tenant": "xxxxxx",
"Environment": "xxxxxx",
"Authority": "https://id.foxids.com/zzzzz/master/foxids_seed/", // custom domain, self-hosted or local development "https://https://localhost:44331/zzzzz/master/foxids_seed/"
"ClientId": "foxids_master_seed",
"ClientSecret": "xxxxxx",
"Scope": "foxids_control_api:foxids:tenant",
"UsersSvcPath": "c:\\... xxx ...\\users.csv"
}
Uruchom seed tool i wgraj użytkowników
- Uruchom Wiersz polecenia
- Uruchom seed tool poleceniem
SeedTool.exe - Wciśnij
U, aby rozpocząć wgrywanie użytkowników
Wgrywanie może potrwać, zależnie od liczby użytkowników.
Seed Tool podaje liczbę sukcesów i niepowodzeń, a zaimportowani użytkownicy są dostępni w FoxIDs Control. Możesz wypróbować przesyłanie małego pliku CSV w środowisku testowym i sprawdzić utworzonych użytkowników. Zbiorcze przesyłanie może zastąpić istniejących użytkowników i ich dane logowania; sprawdź kolizje identyfikatorów przed przesłaniem i uzgodnij częściowy wynik przed ponowieniem.