# IRPCLogin.GetAuthenticationConfiguration

Location: [gRPC API](https://developer.m-files.com/APIs/gRPC-API/index.md) > [Vault API](https://developer.m-files.com/APIs/gRPC-API/vault/index.md) > [Login and sessions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCLogin/index.md)

HTML version: https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCLogin/GetAuthenticationConfiguration/

Badges: `Vault API / core` `session` `no session` `idempotent`

Tells a client, before login, whether to authenticate with an authentication plug-in (single
sign-on) and returns the plug-in's client-side configuration.

- **Service:** [Login and sessions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCLogin/index.md) `MFiles.IRPCLogin`
- **gRPC method:** `/MFiles.IRPCLogin/GetAuthenticationConfiguration`
- **HTTP (mf-http-grpc):** `POST /grpc/v1/get-authentication-configuration`
- **Request:** [`GetAuthenticationConfigurationRequest`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCLogin/GetAuthenticationConfiguration/index.md#request)
- **Response:** [`GetAuthenticationConfigurationResponse`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCLogin/GetAuthenticationConfiguration/index.md#response)
- **Book and level:** Vault API, core
- **Kind:** session
- **Session:** Not needed: the call can be made before logging in.
- **Idempotent:** yes
- **Returns metadata structure version:** no
- **Streaming:** none (unary)

<a id="remarks"></a>

## Remarks

Needs no session. The server looks for a configuration that matches the request; the vault can be
given by `vault_guid` or resolved from `host_name` (the host name the client connects to, as
configured for the vault). A configuration can be limited to one account type (configuration scope
such as `*:WINDOWS:`); it then matches only a request with that `type`. To find the single sign-on
configuration of a vault, set `type` to `ACCOUNT_TYPE_WINDOWS`: users who sign in through an
identity provider have Windows-type login accounts.

- `auth_method` `AUTH_METHOD_PLUGIN`: log in with `AUTH_DATA_TYPE_PLUGIN` using one of
  `plugin_infos`. On M-Files Cloud this is the identity provider sign-in.
- `auth_method` `AUTH_METHOD_UNSPECIFIED` with no `plugin_infos`: no plug-in applies; log in with
  user name and password or Windows authentication.

`target_plugin_name` must be empty; any other value fails with `E_INVALIDARG`.

<a id="request"></a>

## Request: GetAuthenticationConfigurationRequest

> Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page.

| Field | Type | Description |
|---|---|---|
| `remote_can_be_null` | [`ServerAddress`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ServerAddress/index.md) | Leave unset. Naming a remote server needs a server setting that is off by default. |
| `remote_can_be_null.network_address` | `string` | The network address (name) of the server. |
| `remote_can_be_null.endpoint` | `string` | The endpoint of the server. |
| `remote_can_be_null.protocol_sequence` | `string` | The protocol sequence of the server. |
| `user_name` | `string` | Optional. The user name typed by the user, to find a configuration scoped to it. |
| `domain` | `string` | Optional. The user's domain, to find a configuration scoped to it. |
| `vault_guid` | `string` | Optional. The vault the user is logging in to. When empty or all zeros, the vault is resolved from `host_name`. |
| `host_name` | `string` | Optional. The host name the client uses to reach the server, for example the vault's cloud address. Used to find the vault and host-specific configurations. |
| `type` | [`AccountType`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.AccountType/index.md) | The account type to find a configuration for. Leave unset when unknown. Values: `ACCOUNT_TYPE_UNINITIALIZED` (0), `ACCOUNT_TYPE_MFILES` (1), `ACCOUNT_TYPE_WINDOWS` (2). |
| `target_plugin_name` | `string` | Deprecated. Must be empty; any other value fails with `E_INVALIDARG`. |
| `capabilities` | [`ClientCapabilities`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ClientCapabilities/index.md) | The client's capabilities, as in `ClientData.capabilities`. |
| `capabilities.property_def_searchability` | `bool` | Property definitions can be configured searchable or unsearchable. |
| `capabilities.unmanaged_objects` | `bool` | Client understands unmanaged objects. |
| `capabilities.extension_authentication_data_push` | `bool` | Client supports data push for extension authentications. |
| `capabilities.custom_api_data_push` | `bool` | Client supports server data push for M-Files API & custom implementations. |
| `capabilities.unknown_file_size` | `bool` | Client can handle unknown or estimated file size. |
| `capabilities.typed_metadata_suggestions` | `bool` | Client can handle metadata suggestions to all M-Files types. |
| `capabilities.long_authentication_attempt_identifier` | `bool` | The client handles the long (32-byte) authentication attempt identifier in `AuthenticationAttemptIdentifier.data`. |
| `capabilities.reverse_grouping_level` | `bool` | Client supports reverse grouping levels. |
| `capabilities.object_permissions_for_client` | `bool` | Client supports ObjectPermissionsForClient. |
| `capabilities.hierarchical_object_type_properties` | `bool` | Properties with hierarchy for real object types supported. |
| `capabilities.smart_search` | `bool` | Client supports Smart Search engine type. |
| `capabilities.recurring_notifications` | `bool` | Client supports recurring notifications. |
| `capabilities.smart_search_facets` | `bool` | Client supports smart search facets. |
| `capabilities.vault_role_manage_private_views` | `bool` | Client supports a vault role for managing private views. |
| `capabilities.allow_all_see_deleted_conflict_objects` | `bool` | Client supports that all users can see deleted conflict objects. |
| `capabilities.advanced_password_hashes` | `bool` | Client supports hashing passwords with advanced algorithms, including at least PBKDF2. |
| `capabilities.anonymous_authentication` | `bool` | Client supports anonymous authentication. |
| `capabilities.dataset_deleted_condition` | `bool` | Client supports deleted/not deleted-condition in a dataset definition. |
| `capabilities.unified_password_hashes` | `bool` | Client supports transmitting hashing passwords with the same encoding between all gRPC methods. |
| `capabilities.duplicates_view` | `bool` | Client supports the duplicates view. |
| `capabilities.property_action_state_transition_time` | `bool` | Client supports state transition time setting via state property action. |
| `capabilities.at_mentions` | `bool` | Client supports the @mentions in comment texts. |
| `capabilities.additive_permissions_via_automatic_aclcomponents` | `bool` | Client supports additive permissions via automatic ACL components. |
| `capabilities.vault_level_optimization_jobs` | `bool` | Client supports vault-level optimization jobs. |
| `capabilities.visitor_links_supported` | `bool` | Client supports new interface methods for visitor links. |
| `capabilities.object_type_filter_multi_select_views` | `bool` | Client supports multiple object types as a filter for views and advanced searches. |
| `capabilities.generate_v2_azure_auth_conf_supported` | `bool` | Client supports generating authentication configuration for Azure v2.0 endpoint. |
| `capabilities.structure_item_groups_in_export` | `bool` | Client supports structure item groups in the export job. |
| `capabilities.aino_search` | `bool` | Client supports Aino Search engine type. |
| `capabilities.conversation_history` | `bool` | Client supports conversation history. |
| `capabilities.generate_login_service_auth_conf` | `bool` | Client supports generating authentication configuration for M-Files Login Service. |
| `capabilities.sub_folders_in_views` | `bool` | Client supports subfolders in views. |
| `capabilities.reverse_references_in_pseudo_user_aces` | `bool` | Client supports reverse references in pseudo-user ACEs (Access Control Entries). |
| `capabilities.entity_version_checking_supported` | `bool` | Client supports entity version numbering to track modification conflicts. |
| `capabilities.workflow_descriptions_supported` | `bool` | Client supports workflow descriptions. |
| `capabilities.property_value_metadata_supported` | `bool` | Client supports setting and retrieving property value metadata. |
| `capabilities.object_type_grouping_for_relationships` | `bool` | Client supports object type based grouping for relationships. |
| `capabilities.draft_objects` | `bool` | Client supports draft objects in discovery results. |

<a id="response"></a>

## Response: GetAuthenticationConfigurationResponse

> Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page.

| Field | Type | Description |
|---|---|---|
| `auth_method` | [`AuthMethod`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.AuthMethod/index.md) | `AUTH_METHOD_PLUGIN` when `plugin_infos` contains a usable configuration, `AUTH_METHOD_UNSPECIFIED` otherwise. Values: `AUTH_METHOD_UNSPECIFIED` (0), `AUTH_METHOD_PLUGIN` (3). |
| `plugin_infos[]` | repeated [`PluginInfo`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.PluginInfo/index.md) | The matching plug-in configurations. `system_configuration` holds the configuration scope (`Scope`) to send back in `PluginData.configuration_scope`; `plugin_configuration` holds the plug-in's client settings. |
| `plugin_infos[].is_default` | `bool` | True if this is the default configuration. |
| `plugin_infos[].is_scope_independent` | `bool` | True if the plug-in can be used without a configuration scope. |
| `plugin_infos[].name` | `string` | The configuration's name. Send it as `PluginData.plugin_name`. |
| `plugin_infos[].assembly_name` | `string` | The plug-in's implementation, for example `MFiles.AuthenticationProviders.OAuth`. |
| `plugin_infos[].bridge_class_name` | `string` | Internal to the server. |
| `plugin_infos[].system_configuration` | [`NamedValueArray`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.NamedValueArray/index.md) | Where the configuration comes from: `Scope` (send as `PluginData.configuration_scope`) and, for vault-stored configurations, `VaultGUID`. |
| `plugin_infos[].system_configuration.value[]` | repeated [`NamedValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.NamedValue/index.md) | An array of the NamedValue structures. |
| `plugin_infos[].plugin_configuration` | [`NamedValueArray`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.NamedValueArray/index.md) | The plug-in's client-side settings. For an OAuth plug-in these include `AuthorizationEndpoint`, `TokenEndpoint`, `ClientID`, `Scope` and `RedirectURI`. |
| `plugin_infos[].plugin_configuration.value[]` | repeated [`NamedValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.NamedValue/index.md) | An array of the NamedValue structures. |
