authd
Authentication service for external identity providers
파일 탐색기
최종 버전 다운로드 (.zip)- action.yml
- action.yaml
- action.yaml
- action.yaml
- action.yaml
- action.yaml
- action.yaml
- action.yaml
- bug_report.yml
- config.yml
- feature_request.yml
- compute-deb-build-hash.sh
- parse-e2e-options.sh
- automatic-doc-checks.yaml
- brokers-qa.yaml
- build-broker-snap.yaml
- cla-check.yaml
- debian-build-test-and-sync.yaml
- debian-build.yaml
- debian.yaml
- e2e-tests-provision-and-run.yaml
- e2e-tests-run.yaml
- e2e-tests.yaml
- git.yaml
- lxd-test-image-cache-refresh.yaml
- oci-artifacts-cleanup.yaml
- qa.yaml
- tics-run.yaml
- update-broker-variant-branches.yaml
- update-cargo-c.yaml
- validate-dependabot.yaml
- yamlfmt-check.yaml
- .jira_sync_config.yaml
- CODEOWNERS
- dependabot.yml
- pull_request_template.md
- config.go
- daemon.go
- daemon_test.go
- export_test.go
- fs.go
- version.go
- main.go
- main_test.go
- authd.conf
- broker.conf
- authd.conf
- broker.conf
- authd.conf
- broker.conf
- consts.go
- consts.go
- 20-owner-autoregistration.conf.tmpl
- 00
- 01
- 02
- 93a65ad473ce3e3c893c1c1225351f4a3b9d700b1836c1087afdc595cf44fb54
- caf81e9797b19c76
- password
- token.json
- password
- token.json
- first_auth
- second_auth
- password
- token.json
- password
- token.json
- first_auth
- second_auth
- password
- token.json
- password
- token.json
- first_auth
- second_auth
- password
- token.json
- password
- token.json
- first_auth
- second_auth
- Get_only_device_auth_if_token_exists_but_checking_if_it_is_for_device_registration_fails
- Get_only_device_auth_qr_if_device_should_be_registered_and_token_is_not_for_device_registration
- Get_only_device_auth_qr_if_device_should_not_be_registered_and_token_is_for_device_registration
- Get_only_device_auth_qr_if_next_auth_mode_is_device_qr
- Get_only_device_auth_qr_if_there_is_no_password_file
- Get_only_device_auth_qr_if_there_is_no_token
- Get_only_device_auth_qr_if_token_is_invalid
- Get_only_newpassword_if_next_auth_mode_is_newpassword
- Get_only_newpassword_if_session_is_for_changing_password_and_next_auth_mode_is_newpassword
- Get_only_password_if_device_should_be_registered_and_token_is_not_for_device_registration_but_provider_is_not_available
- Get_only_password_if_device_should_not_be_registered_and_token_is_for_device_registration_but_provider_is_not_available
- Get_only_password_if_token_exists_and_provider_does_not_support_device_auth_qr
- Get_only_password_if_token_exists_and_provider_is_not_available
- Get_only_password_if_token_exists_and_session_is_for_changing_password
- Get_only_password_if_token_exists_and_session_mode_is_the_old_passwd_value
- Get_password_and_device_auth_qr_if_device_should_be_registered_and_token_is_for_device_registration
- Get_password_and_device_auth_qr_if_device_should_be_registered_and_token_is_not_for_device_registration_and_provider_does_not_support_it
- Get_password_and_device_auth_qr_if_device_should_not_be_registered_and_token_is_not_for_device_registration
- Get_password_and_device_auth_qr_if_token_exists
- Get_password_and_device_auth_qr_if_token_is_not_for_device_registration_but_provider_does_not_support_it
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- second_call
- .empty
- first_call
- password
- token.json
- first_call
- .empty
- first_call
- second_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- .empty
- first_call
- second_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- .empty
- first_call
- second_call
- .empty
- first_call
- .empty
- first_call
- .empty
- first_call
- .empty
- first_call
- .empty
- first_call
- password
- token.json
- first_call
- .empty
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- .empty
- first_call
- .empty
- first_call
- .empty
- first_call
- password
- token.json
- first_call
- .empty
- first_call
- .empty
- first_call
- .empty
- first_call
- second_call
- .empty
- first_call
- second_call
- .empty
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- second_call
- password
- token.json
- first_call
- second_call
- Returns_denied-max-tries_when_api_version_is_2
- Returns_denied-max-tries_when_api_version_is_greater_than_2
- Returns_denied_when_api_version_is_less_than_2
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- config.txt
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- .empty
- broker.conf
- 20-owner-autoregistration.conf
- broker.conf
- 20-owner-autoregistration.conf
- broker.conf
- Selected_newpassword_shows_correct_label_in_passwd_session
- Successfully_select_device_auth
- Successfully_select_device_auth_qr
- Successfully_select_newpassword
- Successfully_select_password
- Empty_userinfo_if_allowed_suffixes_has_only_empty_string
- Empty_userinfo_if_no_allowed_suffixes_are_provided
- Empty_userinfo_if_username_does_not_match_allowed_suffix
- Empty_userinfo_if_username_does_not_match_any_of_the_allowed_suffixes
- Return_userinfo_with_correct_homedir_after_precheck
- Successfully_allow_username_if_suffix_has_asterisk
- Successfully_allow_username_if_suffix_is_allow_all
- Successfully_allow_username_ignoring_empty_string_in_config
- Successfully_allow_username_that_matches_at_least_one_allowed_suffix
- Successfully_allow_username_with_matching_allowed_suffix
- config.txt
- authresponses.go
- broker.go
- broker_test.go
- config.go
- config_test.go
- consts.go
- encrypt.go
- export_test.go
- helper_test.go
- options_test.go
- consts.go
- google.go
- msentraid.go
- oidc.go
- daemon.go
- com.ubuntu.authd.BrokerV2.xml
- com.ubuntu.authd.BrokerV3.xml
- dbusservice.go
- export_test.go
- localbus.go
- methods.go
- methods_test.go
- systembus.go
- fileutils.go
- fileutils_test.go
- password.go
- password_test.go
- errors.go
- errors_test.go
- genericprovider.go
- genericprovider_test.go
- google.go
- google_test.go
- info.go
- info_test.go
- .gitignore
- deviceregistration.go
- deviceregistration_test.go
- entrapwd.go
- entrapwd_test.go
- errors.go
- generate.sh
- himmelblau.go
- himmelblau_c.go
- himmelblau_c_test.go
- testutils.go
- Successfully_get_groups
- Successfully_get_groups_filtering_non_security_groups
- Successfully_get_groups_with_acquired_access_token
- Successfully_get_groups_with_local_groups
- Successfully_get_groups_with_mixed_groups
- Successfully_get_user_info
- keyset.go
- keyset_test.go
- tokenverify.go
- tokenverify_test.go
- dummy.go
- export_test.go
- helper_test.go
- msentraid.go
- msentraid_test.go
- msmock_test.go
- default.go
- providers.go
- withgoogle.go
- withmsentraid.go
- dbus.go
- path.go
- provider.go
- token.go
- token_test.go
- embedder.go
- fr.po
- mofiles.go
- libhimmelblau
- semver.go
- go.mod
- go.sum
- install-cargo-c
- tools.go
- .gitignore
- .golangci.yaml
- .shellcheckrc
- go.mod
- go.sum
- rust-toolchain.toml
- multiple_users_and_groups.db.yaml
- one_user_and_group.db.yaml
- Error_on_invalid_command
- Error_on_invalid_flag
- Help_flag
- Usage_message_when_no_args
- Confirmation_prompt_aborted_with_empty_input
- Confirmation_prompt_aborted_with_n
- Confirmation_prompt_accepted_case_insensitively
- Confirmation_prompt_accepted_with_y
- Confirmation_prompt_accepted_with_yes
- Delete_group_success
- Error_when_authd_is_unavailable
- Error_when_group_does_not_exist
- Error_when_group_is_primary_group_of_a_user
- Error_when_authd_is_unavailable
- Error_when_gid_is_already_taken
- Error_when_gid_is_invalid
- Error_when_gid_is_negative
- Error_when_gid_is_too_large
- Error_when_group_does_not_exist
- Set_group_gid_success
- empty.group
- delete.go
- delete_test.go
- group.go
- group_test.go
- set-gid.go
- set-gid_test.go
- client.go
- completion.go
- main.go
- manpage.go
- log.go
- root.go
- Completion_command
- Error_on_invalid_command
- Error_on_invalid_flag
- Help_command
- Help_flag
- Usage_message_when_no_args
- multiple_users_and_groups_with_tmp_home.db.yaml
- one_user_and_group.db.yaml
- nested
- marker
- Completion_first_arg_offers_users
- Completion_second_arg_offers_dirs
- Error_when_authd_is_unavailable
- Error_when_destination_already_exists
- Error_when_path_is_not_absolute
- Error_when_user_does_not_exist
- Set_home_dir_with_warning_when_old_home_missing
- Set_user_home_dir_success
- Error_when_user_does_not_exist
- Set_shell_success
- Error_when_authd_is_unavailable
- Error_when_uid_is_already_taken
- Error_when_uid_is_invalid
- Error_when_uid_is_negative
- Error_when_uid_is_too_large
- Error_when_user_does_not_exist
- Set_user_uid_success
- Error_on_invalid_command
- Error_on_invalid_flag
- Help_flag
- Usage_message_when_no_args
- Confirmation_prompt_aborted_with_empty_input
- Confirmation_prompt_aborted_with_n
- Confirmation_prompt_accepted_case_insensitively
- Confirmation_prompt_accepted_with_y
- Confirmation_prompt_accepted_with_yes
- Delete_succeeds_with_warning_when_broker_cleanup_fails
- Delete_user_success
- Delete_with_remove_flag_removes_home_dir
- Delete_with_remove_flag_succeeds_when_home_dir_does_not_exist
- Delete_without_remove_flag_keeps_home_dir
- Error_when_authd_is_unavailable
- Error_when_user_does_not_exist
- Error_when_user_does_not_exist_without_confirmation_prompt
- Error_locking_invalid_user
- Lock_user_success
- empty.group
- delete.go
- delete_test.go
- lock.go
- lock_test.go
- set-home.go
- set-home_test.go
- set-shell.go
- set-shell_test.go
- set-uid.go
- set-uid_test.go
- unlock.go
- user.go
- user_test.go
- main.go
- main_test.go
- db
- group
- group
- invalid.db.yaml
- multiple_users_and_groups.db.yaml
- config.go
- daemon.go
- daemon_test.go
- export_test.go
- fs.go
- integrationtests.go
- migration.go
- migration_test.go
- version.go
- integrationtests.go
- main.go
- main_test.go
- authd.yaml
- authd.in
- format
- lintian-overrides
- options
- control
- run-tests.sh
- apport
- authd.gdm-authd.pam
- authd.service.in
- authd.socket
- changelog
- control
- copyright
- dirs
- docs
- gbp.conf
- get-depends-cargo-bin-paths.sh
- get-depends-go-bin-path.sh
- install
- lintian-overrides
- lrc.config
- manpages
- postinst
- postrm
- prerm
- rules
- triggers
- vendor-rust.sh
- .pre-commit-config.yaml
- .pymarkdown.json
- get_vale_conf.py
- pa11y.json
- update_sp.py
- version
- bundle.js
- cookie-banner.css
- version-warning.css
- footer.html
- header.html
- page.html
- version-warning.html
- authd-architecture.svg
- entraid-app-registration.png
- entraid-graph-permissions.png
- entraid-groups.png
- entraid-new-registration.png
- gdm-pass.png
- gdm-qr.png
- gdm-select-broker.png
- google-app-credentials.png
- google-app-registration.png
- google-choose-app-type.png
- keycloak-create-client.png
- ssh-login.png
- authd-architecture.md
- index.md
- security.md
- structure-of-authd-documentation.md
- user-management.md
- changing-versions.md
- configure-authd.md
- contributing.md
- enter-recovery-mode.md
- index.md
- install-authd.md
- logging.md
- login-gdm.md
- login-ssh.md
- use-with-nfs.md
- use-with-samba.md
- authctl.md
- authctl_group.md
- authctl_group_delete.md
- authctl_group_set-gid.md
- authctl_user.md
- authctl_user_delete.md
- authctl_user_lock.md
- authctl_user_set-home.md
- authctl_user_set-shell.md
- authctl_user_set-uid.md
- authctl_user_unlock.md
- index.md
- cloud-init-deploy.md
- group-management.md
- identity-providers.md
- index.md
- landscape-deploy.md
- troubleshooting.md
- .custom_wordlist.txt
- .gitignore
- .readthedocs.yaml
- conf.py
- generate.go
- index.md
- Makefile
- redirects.txt
- requirements.txt
- Listener.py
- index.js
- .gitignore
- deploy.sh
- wrangler.toml
- __init__.py
- base.py
- browser_window.py
- google.py
- msentraid.py
- authd.resource
- broker.resource
- broker_vars.py
- Browser.py
- ExecUtils.py
- generate_totp.py
- Journal.py
- Snapshot.py
- SSH.py
- ssh.sh
- StringUtils.py
- TOTP.py
- utils.resource
- VideoLogger.py
- VMUtils.py
- VNCRecorder.py
- allowed_users.robot
- authctl_group_set_gid.robot
- authctl_user_set_uid.robot
- authd_disabled.robot
- broker_disabled.robot
- config_home_base_dir.robot
- config_issuer_invalid.robot
- config_owner_auto_update.robot
- deny_login_if_user_not_allowed.robot
- deny_login_if_username_does_not_match.robot
- device_registration.robot
- force_access_check_with_provider.robot
- gdm_managed_user_after_reboot.robot
- local_user_passwd_change.robot
- local_user_passwd_change_cli.robot
- login.robot
- login_entra_password.robot
- login_entra_password_client_secret.robot
- login_gdm.robot
- migration_authd.robot
- migration_authd_broker.robot
- migration_broker.robot
- mixed_case_username.robot
- passwd_changes_keyring_password.robot
- password_change.robot
- polkit_pkexec.robot
- read_only_fs.robot
- regenerate_qrcode.robot
- ssh_deny_login_if_prefix_not_allowed.robot
- ssh_login.robot
- virsh
- libprovision.sh
- cloud-init-template-noble.yaml
- cloud-init-template-resolute.yaml
- cloud-init-template-stonking.yaml
- config.env.template
- e2e-runner-template.xml
- install-provision-deps.sh
- provision-authd.sh
- provision-ubuntu.sh
- provision.sh
- ssh.sh
- .gitignore
- .yarf
- AGENTS.md
- e2e-tests-google.env.template
- e2e-tests-msentraid.env.template
- install-deps.sh
- run-tests.sh
- setup-yarf.sh
- TESTING.md
- yarf-console.sh
- broker.go
- com.ubuntu.auth.ExampleBroker.conf
- com.ubuntu.auth.ExampleBroker.xml
- dbus.go
- ExampleBroker
- users.go
- consts.go
- consts.go
- consts.go
- layouts.go
- layouts_test.go
- extra_fields.conf
- invalid.conf
- no_brand_icon.conf
- no_dbus_name.conf
- no_dbus_object.conf
- no_name.conf
- invalid.conf
- valid.conf
- .empty
- not_on_bus.conf
- ignored.otherextension
- ignored_noextension
- valid.conf
- valid.conf
- valid_2.conf
- file_config_dir
- Does_not_error_out_when_no_authentication_modes_are_returned
- Get_authentication_modes_and_generate_validator_ignoring_whitespaces_in_supported_values
- Get_authentication_modes_and_generate_validators
- Get_authentication_modes_and_ignores_invalid_UI_layout
- Get_multiple_authentication_modes_and_generate_validators
- Adds_default_groups_even_if_broker_did_not_set_them
- Denies_authentication_when_broker_times_out
- Error_on_empty_data_even_if_granted
- Error_when_authenticating
- Error_when_broker_returns_data_on_auth.Cancelled
- Error_when_broker_returns_invalid_access
- Error_when_broker_returns_invalid_data
- Error_when_broker_returns_invalid_data_on_auth.Next
- Error_when_broker_returns_invalid_userinfo
- Error_when_broker_returns_no_data_on_auth.Denied
- Error_when_broker_returns_no_data_on_auth.Retry
- Error_when_broker_returns_userinfo_with_empty_group_name
- Error_when_broker_returns_userinfo_with_empty_username
- Error_when_broker_returns_userinfo_with_invalid_homedir
- Error_when_broker_returns_userinfo_with_invalid_shell
- Ignores_non_string_message_in_granted_response
- No_error_when_auth.Next_and_message
- No_error_when_auth.Next_and_no_data
- No_error_when_broker_returns_userinfo_with_empty_gecos
- No_error_when_broker_returns_userinfo_with_group_with_empty_UGID
- No_error_when_broker_returns_userinfo_with_mismatching_username
- Successfully_authenticate
- Successfully_authenticate_after_cancelling_first_call
- Successfully_authenticate_after_second_call_without_cancelling
- Successfully_authenticate_with_granted_message
- No_config_means_local_broker
- Successfully_create_broker_with_correct_config_file
- Creates_all_brokers_when_config_dir_has_only_valid_brokers
- Creates_only_correct_brokers_when_config_dir_has_valid_and_invalid_brokers
- Creates_only_local_broker_when_config_dir_does_not_exist
- Creates_only_local_broker_when_config_dir_has_only_invalid_ones
- Creates_without_autodiscovery_when_configuredBrokers_is_set
- Ignores_any_unknown_sections_and_fields
- Ignores_broker_configuration_file_not_ending_with_.conf
- Ignores_brokers_not_available_on_dbus
- Successfully_start_a_new_auth_session
- Successfully_start_a_new_passwd_session
- Successfully_start_a_new_session_with_the_correct_broker
- Successfully_select_mode_with_missing_optional_value
- Successfully_select_mode_with_optional_value
- Successfully_select_mode_with_required_value
- Successfully_unmarshal_complete_user_info
- Unmarshaling_json_with_additional_field_ignores_it
- Unmarshaling_json_with_empty_field_keeps_its_value
- Unmarshaling_json_with_missing_field_adds_zero_value
- Successfully_pre-check_user
- broker.go
- broker_test.go
- dbusbroker.go
- dbusbroker_test.go
- export_test.go
- internal_test.go
- localbroker.go
- manager.go
- manager_test.go
- withexamples.go
- withoutexamples.go
- consts.go
- generate.go
- grpctestservice.pb.go
- grpctestservice.proto
- grpctestservice_grpc.pb.go
- daemon.go
- daemon_test.go
- export_test.go
- decorate.go
- envutils.go
- envutils_test.go
- errno_c.go
- errno_c_test.go
- export_test.go
- Change_only_the_directory_group
- Change_only_the_directory_owner
- Change_only_the_directory_owner_and_group
- Change_only_the_file_group
- Change_only_the_file_owner
- Change_only_the_file_owner_and_group
- Group_not_changed_when_GID_does_not_match
- No_change_if_no_file_matches_fromGID
- No_change_if_no_file_matches_fromUID
- No_change_if_ownership_is_same_as_current
- Owner_not_changed_when_UID_does_not_match
- Successfully_change_group
- Successfully_change_owner
- Successfully_change_owner_and_group
- fileutils.go
- fileutils_test.go
- grpcutils.go
- authd.pb.go
- authd.proto
- authd_grpc.pb.go
- authd_proto.go
- generate.go
- error.go
- internal_test.go
- redactor.go
- Success_getting_available_brokers
- Successfully_get_authentication_modes
- Successfully_get_multiple_authentication_modes
- cache.db
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- cache.db
- IsAuthenticated
- Update_local_groups.group
- Update_local_groups.group.backup
- Successfully_select_mode_with_missing_optional_value
- Successfully_select_mode_with_required_value
- Successfully_select_a_broker_and_creates_auth_session
- Successfully_select_a_broker_and_creates_passwd_session
- cache.db
- cache.db
- cache.db
- get-broker.db
- cache-with-locked-user.db
- cache-with-uptodate-user.db
- cache-with-user.db
- valid.group
- bound-to-other-broker.db
- set-broker.db
- auth_fail_tracker_test.go
- export_test.go
- pam.go
- pam_test.go
- export_test.go
- internal_test.go
- permissions.go
- permissions_test.go
- servercreds.go
- testutils.go
- TestRegisterGRPCServices
- Successfully_delete_group
- Successfully_delete_group_with_uppercase
- database
- response
- database
- response
- database
- response
- database
- response
- Return_existing_group
- Return_existing_group
- Return_existing_group_with_uppercase
- Return_existing_user
- Precheck_user_if_not_in_db
- Prechecked_user_with_upper_cases_in_username_has_same_id_as_lower_case
- Return_existing_user
- Return_existing_user_with_uppercase
- Return_all_groups
- Return_no_groups
- Return_all_users
- Return_no_users
- Successfully_lock_user
- Successfully_lock_user_with_uppercase
- Successfully_set_group_id
- Successfully_set_group_id_with_uppercase
- database
- response
- database
- response
- database
- response
- database
- response
- Successfully_set_user_id
- Successfully_set_user_id_with_uppercase
- Successfully_unlock_user
- Successfully_unlock_user_with_uppercase
- default.db.yaml
- delete-user.db.yaml
- empty.db.yaml
- locked-user.db.yaml
- user.go
- user_test.go
- manager.go
- manager_test.go
- withexamples.go
- withoutexamples.go
- sliceutils.go
- sliceutils_test.go
- testlog.go
- binary.go
- integrationtests.go
- testsdetection.go
- testsdetection_test.go
- golden.go
- main.go
- ptytest.go
- ptytest_test.go
- SPEC.md
- terminal.go
- args.go
- artifacts.go
- authctl.go
- broker.go
- bubblewrap.go
- coverage.go
- daemon.go
- dbus.go
- exec.go
- lxd.go
- path.go
- root.go
- rust.go
- sync.go
- create_schema.sql
- Get_multiple_groups
- Get_one_group
- Get_multiple_users
- Get_one_user
- Deleting_shared_group_removes_only_that_group_and_its_memberships
- Deleting_sole_group_of_a_user_removes_group_and_memberships_but_keeps_user
- Deleting_existing_user_keeps_other_group_members_intact
- Deleting_last_user_from_a_group_keeps_the_group_record
- Get_existing_group
- Get_existing_group
- Get_existing_group
- Get_existing_group
- db
- groups
- db
- db
- groups
- db
- groups
- db
- groups
- groups-backup
- db
- groups
- groups-backup
- db
- groups
- groups-backup
- New_with_already_existing_database
- New_without_any_initialized_database
- Set_group_id_for_existing_group
- Update_existing_user_home_dir
- Update_existing_user_shell
- No_op_if_uid_is_already_set
- Set_user_id_for_existing_user
- Add_user_to_group_from_another_user
- Insert_new_user
- Insert_new_user_without_optional_gecos_field
- Remove_group_from_user
- Remove_user_from_a_group_still_part_from_another_user
- Update_only_user_even_if_we_have_multiple_of_them
- Update_user_by_adding_a_new_default_group
- Update_user_by_adding_a_new_group
- Update_user_by_adding_a_new_local_group
- Update_user_by_changing_attributes
- Update_user_by_removing_optional_gecos_field_if_not_set
- Update_user_by_renaming_a_group
- Update_user_does_not_change_homedir_if_it_exists
- Update_user_does_not_change_shell_if_it_exists
- Get_existing_user
- Get_existing_user
- Get_groups_of_existing_user
- TestMigrationAddLockedColumnToUsersTable
- TestMigrationAddProviderIDColumnToUsersTable
- TestProviderIDUniquenessEnforcedAfterMigration
- one_user_and_group_v2.sql
- one_user_and_group_without_locked_column.sql
- two_users_without_provider_id_column.sql
- one_users_multiple_groups_fully_uppercase.sql
- one_users_multiple_groups_with_uppercase.sql
- empty.db.yaml
- multiple_users_and_groups.db.yaml
- one_user_and_group.db.yaml
- db.go
- db_test.go
- export_test.go
- groups.go
- migration.go
- testutils.go
- update.go
- usergroups.go
- userlocalgroups.go
- users.go
- idlimitsgenerator.go
- Empty_group_adding_one_group.group
- Empty_group_adding_one_group.group.backup
- Empty_group_adding_one_group_with_one_user.group
- Empty_group_adding_one_group_with_one_user.group.backup
- Empty_group_adding_two_groups_with_two_users.group
- Empty_group_adding_two_groups_with_two_users.group.backup
- Ignores_adding_duplicated_equal_group_to_existing_file.group
- Ignores_adding_duplicated_equal_group_to_existing_file.group.backup
- Ignores_adding_duplicated_equal_groups.group
- Ignores_adding_duplicated_equal_groups.group.backup
- Insert_new_user_in_existing_files_with_multiple_other_users_in_our_group.group
- Insert_new_user_in_existing_files_with_multiple_other_users_in_our_group.group.backup
- Insert_new_user_in_existing_files_with_no_users_in_our_group.group
- Insert_new_user_in_existing_files_with_no_users_in_our_group.group.backup
- Insert_new_user_in_existing_files_with_other_users_in_our_group.group
- Insert_new_user_in_existing_files_with_other_users_in_our_group.group.backup
- Insert_new_user_when_no_users_in_any_group.group
- Insert_new_user_when_no_users_in_any_group.group.backup
- Removes_group_correctly.group
- Removes_group_correctly.group.backup
- Warn_when_groups_file_has_a_duplicated_group.group
- Warn_when_groups_file_has_a_duplicated_group.group.backup
- Warn_when_groups_file_has_an_extra_field.group
- Warn_when_groups_file_has_an_extra_field.group.backup
- Warn_when_groups_file_has_entries_with_missing_fields.group
- Warn_when_groups_file_has_entries_with_missing_fields.group.backup
- Add_and_remove_user_from_multiple_groups_with_one_remaining.group
- Add_and_remove_user_from_multiple_groups_with_one_remaining.group.backup
- Group_file_with_empty_line_is_ignored.group
- Group_file_with_empty_line_is_ignored.group.backup
- Insert_new_user_in_existing_files_with_multiple_other_users_in_our_group.group
- Insert_new_user_in_existing_files_with_multiple_other_users_in_our_group.group.backup
- Insert_new_user_in_existing_files_with_no_users_in_our_group.group
- Insert_new_user_in_existing_files_with_no_users_in_our_group.group.backup
- Insert_new_user_in_existing_files_with_other_users_in_our_group.group
- Insert_new_user_in_existing_files_with_other_users_in_our_group.group.backup
- Insert_new_user_when_no_users_in_any_group.group
- Insert_new_user_when_no_users_in_any_group.group.backup
- Insert_user_in_the_only_local_group_when_not_present.group
- Insert_user_in_the_only_local_group_when_not_present.group.backup
- Insert_user_in_the_only_local_group_when_not_present_even_with_multiple.group
- Insert_user_in_the_only_local_group_when_not_present_even_with_multiple.group.backup
- Missing_group_is_ignored.group
- Missing_group_is_ignored.group.backup
- User_is_added_to_group_they_were_added_to_before.group
- User_is_added_to_group_they_were_added_to_before.group.backup
- User_is_removed_from_old_groups_but_not_from_other_groups.group
- User_is_removed_from_old_groups_but_not_from_other_groups.group.backup
- Warn_when_groups_file_has_invalid_gid.group
- Warn_when_groups_file_has_invalid_gid.group.backup
- empty.group
- empty_line.group
- inactive_user_in_many_groups.group
- inactive_user_in_one_group.group
- inactive_users_in_many_groups.group
- inactive_users_in_one_group.group
- malformed_file_duplicated.group
- malformed_file_extra_field.group
- malformed_file_invalid_entries_length.group
- malformed_file_invalid_gid.group
- malformed_file_missing_field.group
- malformed_file_no_group_name.group
- missing_group.group
- multiple_users_in_our_groups.group
- no_users.group
- no_users_in_our_groups.group
- user_and_others_in_one_groups.group
- user_in_both_groups.group
- user_in_many_groups.group
- user_in_one_group.group
- user_in_second_local_group.group
- user_in_second_local_group_with_others.group
- users_in_our_groups.group
- localgroups.go
- export_test.go
- getgrent_c.go
- getgrent_test.go
- getpwent_c.go
- getpwent_test.go
- localgroups.go
- localgroups_test.go
- localusers.go
- localusers_test.go
- lockedentries.go
- lockedentries_test.go
- testutils.go
- testlocker.go
- locking.go
- locking_bwrap_test.go
- locking_c.go
- locking_test.go
- testutils.go
- proc.go
- proc_test.go
- Panics_registering_a_pre-auth_user_again
- Panics_registering_a_pre-auth_user_again_with_different_uid
- Panics_registering_a_pre-auth_user_if_the_first_generated_UID_is_already_registered
- Successfully_register_a_pre-auth_user
- Successfully_get_a_user_by_ID_and_name
- export_test.go
- preauth.go
- preauth_test.go
- group-with-empty-UGID.db.yaml
- group_primary_check.db.yaml
- locked_user.db.yaml
- multiple_users_and_groups.db.yaml
- multiple_users_and_groups_with_non_primary_group.db.yaml
- multiple_users_and_groups_with_tmp_home.db.yaml
- multiple_users_shared_primary_group_with_tmp_home.db.yaml
- one_user_and_group.db.yaml
- one_user_and_group_with_matching_gid.db.yaml
- one_user_and_group_with_providerid.db.yaml
- one_user_and_group_with_providerid_and_local_group.db.yaml
- one_user_with_private_group_ugid_equals_name.db.yaml
- two_users_with_providerid_and_local_group.db.yaml
- user_with_primary_group_gid_changed.db.yaml
- Successfully_get_all_groups
- Successfully_get_all_users
- Successfully_get_all_users
- user1-from-getOldUserInfoFromDB
- user2-from-getOldUserInfoFromDB
- user3-from-getOldUserInfoFromDB
- userwithoutbroker-from-getOldUserInfoFromDB
- user1-from-getOldUserInfoFromDB
- user2-from-getOldUserInfoFromDB
- user3-from-getOldUserInfoFromDB
- userwithoutbroker-from-getOldUserInfoFromDB
- Successfully_delete_group_keeps_its_members_in_the_db
- Successfully_delete_shared_group_leaves_other_groups_intact
- Successfully_delete_user
- Successfully_delete_user_and_remove_home
- Successfully_delete_user_keeps_other_users_in_shared_group
- Successfully_delete_user_keeps_primary_group_if_other_users_still_use_it
- Successfully_delete_user_removes_them_from_local_groups
- Successfully_get_group_by_ID
- Successfully_get_group_by_ID_for_preauth_user
- Successfully_get_group_by_name
- Successfully_lock_user
- Successfully_create_manager_with_custom_config
- Successfully_create_manager_with_default_config
- Successfully_create_manager_with_GID_range_next_to_systemd_dynamic_groups
- Successfully_create_manager_with_UID_range_next_to_systemd_dynamic_users
- Warns_creating_manager_with_partially_invalid_GID_ranges
- Warns_creating_manager_with_partially_invalid_UID_ranges
- Successfully_if_user_already_exists_on_db
- Successfully_update_user
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- warnings
- db
- warnings
- db
- warnings
- db
- warnings
- db
- warnings
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- db
- response
- Successfully_get_shadow_by_name
- Successfully_enable_user
- Successfully_update_broker_for_user
- Allow_login_with_existing_group_on_system
- GID_does_not_change_if_group_with_same_name_and_empty_UGID_exists
- GID_does_not_change_if_group_with_same_UGID_exists
- Removing_last_user_from_a_group_keeps_the_group_record
- Successfully_update_user
- Successfully_update_user_updating_local_groups
- Successfully_update_user_updating_local_groups_with_changes
- Successfully_update_user_updating_local_groups_with_changes.group
- Successfully_update_user_updating_local_groups_with_changes.group.backup
- UID_does_not_change_if_user_already_exists
- User_private_group_GID_preserved_across_logins
- Successfully_get_temporary_user_by_ID
- Successfully_get_user_by_ID
- Successfully_get_user_by_name
- Returns_empty_slice_for_shared_group_that_is_not_primary
- Returns_empty_slice_when_no_user_has_it_as_primary
- Returns_multiple_users_when_group_is_primary_for_several
- Returns_users_for_which_the_group_is_primary
- empty.group
- single_localgroup_user1.group
- user_mismatching_groups.group
- users_in_groups.group
- user1
- user2
- user3
- userwithoutbroker
- user1
- user2
- user3
- userwithoutbroker
- manager.go
- groupentry.go
- groupentry_test.go
- groupinfo.go
- groupinfo_test.go
- types.go
- userinfo.go
- userinfo_test.go
- defs.go
- export_test.go
- generate.go
- idgenerator.go
- idgenerator_test.go
- idlimits.go
- manager.go
- manager_bwrap_test.go
- manager_test.go
- testutils.go
- userutils.go
- handler.go
- journal.go
- log.go
- log_test.go
- authctl.1
- generate.go
- multiple_users_and_groups.db.yaml
- pam_unix_non_existent.db.yaml
- Check_user_with_broker_if_not_found_in_db
- Check_user_with_broker_if_not_found_in_db_in_upper_case
- Get_all_entries_from_group
- Get_all_entries_from_passwd
- Get_all_entries_from_shadow
- Get_entry_from_group_by_id
- Get_entry_from_group_by_name
- Get_entry_from_passwd_by_id
- Get_entry_from_passwd_by_name
- Get_entry_from_passwd_by_name_in_upper_case
- Get_entry_from_shadow_by_name
- Returns_empty_when_getting_all_entries_from_group_and_daemon_is_not_available
- Returns_empty_when_getting_all_entries_from_passwd_and_daemon_is_not_available
- Returns_empty_when_getting_all_entries_from_shadow_and_daemon_is_not_available
- empty.group
- helper_test.go
- integration_test.go
- coverage.go
- mod.rs
- coverage.go
- mod.rs
- coverage.go
- mod.rs
- coverage.go
- mod.rs
- coverage.go
- mod.rs
- coverage.go
- db_override.c
- lib.rs
- build.rs
- Cargo.toml
- coverage.go
- module.c
- client.go
- modulewrapper.go
- pam_mkhomedir.c
- pam_mkhomedir_test.h
- sshd_preloader.c
- authd_0.4.1_bbolt_with_mixed_case_users.db.yaml
- Authenticate_user_and_add_it_to_local_group
- Authenticate_user_and_add_it_to_local_group.group
- Authenticate_user_and_add_it_to_local_group.group.backup
- Authenticate_user_and_offer_password_reset
- Authenticate_user_and_reset_password_while_enforcing_policy
- Authenticate_user_and_reset_password_with_case_insensitive_user_selection
- Authenticate_user_successfully
- Authenticate_user_successfully_after_trying_empty_user
- Authenticate_user_successfully_with_invalid_connection_timeout
- Authenticate_user_successfully_with_password_only_supported_method
- Authenticate_user_successfully_with_preset_user
- Authenticate_user_successfully_with_upper_case
- Authenticate_user_successfully_with_upper_case_preset_user
- Authenticate_user_switching_auth_mode
- Authenticate_user_switching_to_local_broker
- Authenticate_user_switching_username
- Authenticate_user_with_form_mode_with_button
- Authenticate_user_with_mfa
- Authenticate_user_with_mfa_and_reset_password_while_enforcing_policy
- Authenticate_user_with_qr_code
- Authenticate_user_with_qr_code_after_many_regenerations
- Authenticate_user_with_qr_code_in_a_TTY
- Authenticate_user_with_qr_code_in_a_TTY_session
- Authenticate_user_with_qr_code_in_screen
- Authenticate_with_warnings_on_unsupported_arguments
- Autoselect_local_broker_for_local_user
- Autoselect_local_broker_for_local_user_preset
- Deny_authentication_if_max_attempts_reached
- Deny_authentication_if_newpassword_does_not_match_required_criteria
- Deny_authentication_if_user_does_not_exist
- Error_if_cannot_connect_to_authd
- Exit_authd_if_local_broker_is_selected
- Exit_authd_if_user_presses_ctrl_d
- Exit_authd_if_user_sigints
- Exit_if_authd_is_stopped
- Exit_the_pam_client_if_parent_pam_application_is_stopped
- Prevent_user_from_switching_username
- Remember_last_successful_broker_and_mode
- Change_passwd_after_MFA_auth
- Change_password_successfully_and_authenticate_with_new_one
- Change_password_successfully_and_authenticate_with_new_one_with_different_case
- Exit_authd_if_local_broker_is_selected
- Exit_authd_if_user_presses_ctrl_d
- Exit_authd_if_user_sigints
- Prevent_change_password_if_auth_fails
- Prevent_change_password_if_user_does_not_exist
- Retry_if_new_password_does_not_match_quality_criteria
- Retry_if_new_password_is_rejected_by_broker
- Retry_if_new_password_is_same_of_previous
- Retry_if_password_confirmation_is_not_the_same
- Authenticate_user_and_accept_password_reset
- Authenticate_user_and_add_it_to_local_group
- Authenticate_user_and_add_it_to_local_group.group
- Authenticate_user_and_add_it_to_local_group.group.backup
- Authenticate_user_and_offer_password_reset
- Authenticate_user_and_reset_password_while_enforcing_policy
- Authenticate_user_and_reset_password_with_case_insensitive_user_selection
- Authenticate_user_on_ssh_service
- Authenticate_user_on_ssh_service_with_custom_name_and_auth_info_env
- Authenticate_user_on_ssh_service_with_custom_name_and_connection_env
- Authenticate_user_successfully
- Authenticate_user_successfully_using_upper_case_with_user_selection
- Authenticate_user_successfully_with_dumb_terminal
- Authenticate_user_successfully_with_invalid_connection_timeout
- Authenticate_user_successfully_with_password_only_supported_method
- Authenticate_user_successfully_with_password_only_supported_method_in_polkit
- Authenticate_user_successfully_with_upper_case
- Authenticate_user_successfully_with_user_selection
- Authenticate_user_switching_auth_mode
- Authenticate_user_switching_to_local_broker
- Authenticate_user_switching_username
- Authenticate_user_with_form_mode_with_button
- Authenticate_user_with_form_mode_with_button_in_polkit
- Authenticate_user_with_form_mode_with_button_two_supported_methods
- Authenticate_user_with_mfa
- Authenticate_user_with_mfa_and_reset_password_while_enforcing_policy
- Authenticate_user_with_mfa_and_reset_same_password
- Authenticate_user_with_qr_code
- Authenticate_user_with_qr_code_in_a_TTY
- Authenticate_user_with_qr_code_in_a_TTY_session
- Authenticate_user_with_qr_code_in_screen
- Authenticate_user_with_qr_code_in_ssh
- Authenticate_user_with_qr_code_without_code
- Authenticate_with_warnings_on_unsupported_arguments
- Autoselect_local_broker_for_local_user
- Autoselect_local_broker_for_local_user_on_polkit
- Autoselect_local_broker_for_local_user_preset
- Autoselect_local_broker_for_local_user_preset_on_polkit
- Deny_authentication_if_max_attempts_reached
- Deny_authentication_if_newpassword_does_not_match_required_criteria
- Deny_authentication_if_user_does_not_exist
- Deny_authentication_if_user_does_not_exist_and_matches_cancel_key
- Error_if_cannot_connect_to_authd
- Exit_authd_if_local_broker_is_selected
- Exit_authd_if_user_sigints
- Exit_if_authd_is_stopped
- Exit_if_user_is_not_pre-checked_on_custom_ssh_service_with_auth_info_env
- Exit_if_user_is_not_pre-checked_on_custom_ssh_service_with_connection_env
- Exit_if_user_is_not_pre-checked_on_ssh_service
- Exit_the_pam_client_if_parent_pam_application_is_stopped
- Prevent_preset_user_from_switching_username
- Remember_last_successful_broker_and_mode
- Change_passwd_after_MFA_auth
- Change_password_successfully_and_authenticate_with_new_one
- Change_password_successfully_and_authenticate_with_new_one_with_different_case
- Change_password_successfully_and_authenticate_with_new_one_with_single_broker_and_password_only_supported_method
- Exit_authd_if_local_broker_is_selected
- Exit_authd_if_user_sigints
- Prevent_change_password_if_auth_fails
- Prevent_change_password_if_user_does_not_exist
- Retry_if_new_password_does_not_match_quality_criteria
- Retry_if_new_password_is_rejected_by_broker
- Retry_if_new_password_is_same_of_previous
- Retry_if_password_confirmation_is_not_the_same
- Authenticate_user_and_accept_password_reset
- Authenticate_user_and_accept_password_reset_with_shared_sshd
- Authenticate_user_and_add_it_to_local_group
- Authenticate_user_and_add_it_to_local_group.group
- Authenticate_user_and_add_it_to_local_group.group.backup
- Authenticate_user_and_add_it_to_local_group_with_shared_sshd
- Authenticate_user_and_add_it_to_local_group_with_shared_sshd.group
- Authenticate_user_and_add_it_to_local_group_with_shared_sshd.group.backup
- Authenticate_user_and_offer_password_reset
- Authenticate_user_and_offer_password_reset_with_shared_sshd
- Authenticate_user_and_reset_password_then_allow_uppercase_re-login_on_ubuntu_24.04
- Authenticate_user_and_reset_password_then_allow_uppercase_re-login_on_ubuntu_24.04_with_shared_sshd
- Authenticate_user_and_reset_password_then_deny_uppercase_re-login_on_ubuntu_26.04
- Authenticate_user_and_reset_password_then_deny_uppercase_re-login_on_ubuntu_26.04_with_shared_sshd
- Authenticate_user_and_reset_password_while_enforcing_policy
- Authenticate_user_and_reset_password_while_enforcing_policy_with_shared_sshd
- Authenticate_user_locks_and_unlocks_it
- Authenticate_user_locks_and_unlocks_it_with_shared_sshd
- Authenticate_user_successfully
- Authenticate_user_successfully_and_enters_shell
- Authenticate_user_successfully_and_enters_shell_with_shared_sshd
- Authenticate_user_successfully_if_already_registered
- Authenticate_user_successfully_if_already_registered_with_shared_sshd
- Authenticate_user_successfully_if_already_registered_with_upper_case_on_ubuntu_24.04
- Authenticate_user_successfully_if_already_registered_with_upper_case_on_ubuntu_24.04_with_shared_sshd
- Authenticate_user_successfully_with_shared_sshd
- Authenticate_user_successfully_with_upper_case_on_ubuntu_24.04
- Authenticate_user_successfully_with_upper_case_on_ubuntu_24.04_with_shared_sshd
- Authenticate_user_switching_auth_mode
- Authenticate_user_switching_auth_mode_with_shared_sshd
- Authenticate_user_switching_to_local_broker
- Authenticate_user_switching_to_local_broker_with_shared_sshd
- Authenticate_user_with_form_mode_with_button
- Authenticate_user_with_form_mode_with_button_with_shared_sshd
- Authenticate_user_with_mfa
- Authenticate_user_with_mfa_and_reset_password_while_enforcing_policy
- Authenticate_user_with_mfa_and_reset_password_while_enforcing_policy_with_shared_sshd
- Authenticate_user_with_mfa_and_reset_same_password
- Authenticate_user_with_mfa_and_reset_same_password_with_shared_sshd
- Authenticate_user_with_mfa_with_shared_sshd
- Authenticate_user_with_qr_code
- Authenticate_user_with_qr_code_with_shared_sshd
- Autoselect_local_broker_for_local_user
- Autoselect_local_broker_for_local_user_with_shared_sshd
- Deny_authentication_if_max_attempts_reached
- Deny_authentication_if_max_attempts_reached_with_shared_sshd
- Deny_authentication_if_newpassword_does_not_match_required_criteria
- Deny_authentication_if_newpassword_does_not_match_required_criteria_with_shared_sshd
- Deny_authentication_if_user_does_not_exist_and_matches_cancel_key_on_ubuntu_24.04
- Deny_authentication_if_user_does_not_exist_and_matches_cancel_key_on_ubuntu_24.04_with_shared_sshd
- Deny_authentication_if_user_does_not_exist_and_matches_cancel_key_on_ubuntu_26.04
- Deny_authentication_if_user_does_not_exist_and_matches_cancel_key_on_ubuntu_26.04_with_shared_sshd
- Deny_authentication_if_user_does_not_exist_on_ubuntu_24.04
- Deny_authentication_if_user_does_not_exist_on_ubuntu_24.04_with_shared_sshd
- Deny_authentication_if_user_does_not_exist_on_ubuntu_26.04
- Deny_authentication_if_user_does_not_exist_on_ubuntu_26.04_with_shared_sshd
- Deny_authentication_if_username_has_uppercase_and_already_registered_on_ubuntu_26.04
- Deny_authentication_if_username_has_uppercase_and_already_registered_on_ubuntu_26.04_with_shared_sshd
- Deny_authentication_if_username_has_uppercase_on_ubuntu_26.04
- Deny_authentication_if_username_has_uppercase_on_ubuntu_26.04_with_shared_sshd
- Error_if_cannot_connect_to_authd_on_ubuntu_24.04
- Error_if_cannot_connect_to_authd_on_ubuntu_24.04_with_shared_sshd
- Error_if_cannot_connect_to_authd_on_ubuntu_26.04
- Error_if_cannot_connect_to_authd_on_ubuntu_26.04_with_shared_sshd
- Exit_authd_if_local_broker_is_selected
- Exit_authd_if_local_broker_is_selected_with_shared_sshd
- Exit_authd_if_user_sigints
- Exit_authd_if_user_sigints_with_shared_sshd
- Exit_if_user_is_not_pre-checked_on_ssh_service_on_ubuntu_24.04
- Exit_if_user_is_not_pre-checked_on_ssh_service_on_ubuntu_24.04_with_shared_sshd
- Exit_if_user_is_not_pre-checked_on_ssh_service_on_ubuntu_26.04
- Exit_if_user_is_not_pre-checked_on_ssh_service_on_ubuntu_26.04_with_shared_sshd
- Prevent_user_from_switching_username
- Prevent_user_from_switching_username_with_shared_sshd
- Remember_last_successful_broker_and_mode
- Remember_last_successful_broker_and_mode_with_shared_sshd
- groups
- groups
- groups
- groups
- groups
- TestGdmModuleAcctMgmtWithoutGdmExtension
- TestGdmModuleAuthenticateWithoutGdmExtension
- TestGdmModuleWithCWrapper
- cli_test.go
- exec_test.go
- gdm-module-handler_test.go
- gdm_test.go
- helpers_test.go
- integration_test.go
- lxd_test.go
- modulehelpers_test.go
- native_test.go
- pty_helpers_test.go
- ssh_test.go
- authentication.go
- authentication_test.go
- authmodeselection.go
- authmodeselection_test.go
- brokerselection.go
- button.go
- commands.go
- debug.go
- export_test.go
- focustracker.go
- formmodel.go
- gdmmodel.go
- gdmmodel_convhandler_test.go
- gdmmodel_helpers_test.go
- gdmmodel_test.go
- gdmmodel_uimodel_test.go
- list.go
- model.go
- nativemodel.go
- nativemodel_test.go
- newpasswordmodel.go
- pwquality_c.go
- qrcodemodel.go
- reselectbuttonmodel.go
- return.go
- textinputmodel.go
- userselection.go
- utils.go
- utils_test.go
- mockserver_test.go
- transaction.go
- transaction_test.go
- gdm-custom-json-pam-extension.h
- gdm-pam-extensions-common.h
- conversation.go
- conversation_test.go
- debug.go
- export_test.go
- extension.go
- extension.h
- extension_test.go
- gdm.pb.go
- gdm.proto
- main_test.go
- protocol.go
- protocol_test.go
- gdm_utils.go
- errors.go
- module-transaction-dummy.go
- module-transaction-dummy_test.go
- pam-client-dummy.go
- pam-client-dummy_test.go
- runner-utils.go
- service-utils.go
- service-utils_test.go
- utils.go
- generate.go
- pam.pb.go
- pam.proto
- pam-runner.go
- .gitignore
- generate.go
- generate.sh
- generate_debug.go
- main-exec.go
- pam.go
- pam_authtok_debug.go
- pam_module.go
- pam_module_debug.go
- pam_session_test.go
- pam_test.go
- README.md
- generate-vendored-copyright
- golangci-lint
- gotestcov
- authctl
- authctl.fish
- _authctl
- generate.go
- install
- post-refresh
- pre-refresh
- prepare-variant
- version
- icon.svg
- snapcraft.yaml
- icon.svg
- snapcraft.yaml
- icon.svg
- snapcraft.yaml
- generate-proto.sh
- go.mod
- go.sum
- tools.go
- .gitignore
- .gitmodules
- .golangci.yaml
- .shellcheckrc
- .yamlfmt
- AGENTS.md
- Cargo.lock
- Cargo.toml
- CLAUDE.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- COPYING
- COPYING.LESSER
- go.mod
- go.sum
- README.md
- RELEASE.md
- robot.toml
- SECURITY.md
# 설치 가이드
1. 코드 내려받기
git clone https://github.com/canonical/authd
깃허브에서 프로젝트 코드 전체를 내 컴퓨터로 내려받습니다.
cd authd
방금 내려받은 프로젝트 폴더 안으로 이동합니다.
2. Go
보통 추천cd authd-oidc-brokers
이 프로젝트의 관련 파일이 하위 폴더 안에 있어서, 먼저 그 폴더로 이동합니다.
go build ./...
Go 프로그램을 컴파일해 실행 파일을 만듭니다.
go run .
따로 빌드하지 않고 바로 Go 프로그램을 실행합니다.
빌드가 에러 없이 끝나면 성공입니다. go run . 을 썼다면 터미널 출력을 확인하세요.
3. Rust
보통사전 준비물
- Git GitHub에서 프로젝트 코드를 내려받으려면 필요합니다.
- Rust (rustup) rustup으로 설치하면 cargo도 함께 설치됩니다.
cargo build --release
Rust 프로젝트를 컴파일합니다.
cargo run
빌드 후 바로 실행까지 진행합니다.
cargo build가 에러 없이 끝나면 성공입니다. target/ 폴더에 실행 파일이 생성됩니다.
// repository documentation
Was this content helpful?
(0 ratings)
