Strategy for authenticating using Google
This strategy builds on-top of AshAuthentication.Strategy.Oidc and
assent.
In order to use Google you need to provide the following minimum configuration:
client_idredirect_uriclient_secret
As of Assent v0.3.0, the Google strategy uses OpenID Connect (OIDC) and automatically retrieves configuration (token URL, user info URL, etc.) from Google's discovery endpoint.
google name \\ :googleProvides a pre-configured authentication strategy for Google.
This strategy is built using the :oidc strategy, and automatically
retrieves configuration from Google's discovery endpoint.
The following defaults are applied:
:base_urlis set to"https://accounts.google.com/".:authorization_paramsis set to[scope: "email profile"].:client_authentication_methodis set to"client_secret_post".
| Name | Type | Default | Docs |
|---|---|---|---|
name{: #authentication-strategies-google-name .spark-required} |
atom |
Uniquely identifies the strategy. |
| Name | Type | Default | Docs |
|---|---|---|---|
client_id{: #authentication-strategies-google-client_id .spark-required} |
(any, any -> any) | module | String.t |
The OAuth2 client ID. Takes either a module which implements the AshAuthentication.Secret behaviour, a 2 arity anonymous function or a string. |
|
redirect_uri{: #authentication-strategies-google-redirect_uri .spark-required} |
(any, any -> any) | module | String.t |
The callback URI base. Not the whole URI back to the callback endpoint, but the URI to your AuthPlug. Takes either a module which implements the AshAuthentication.Secret behaviour, a 2 arity anonymous function or a string. |
|
base_url{: #authentication-strategies-google-base_url } |
(any, any -> any) | module | String.t |
"https://accounts.google.com/" |
The base URL of the OAuth2 server - including the leading protocol (ie https://). Takes either a module which implements the AshAuthentication.Secret behaviour, a 2 arity anonymous function or a string. |
site{: #authentication-strategies-google-site } |
(any, any -> any) | module | String.t |
Deprecated: Use base_url instead. |
|
prevent_hijacking?{: #authentication-strategies-google-prevent_hijacking? } |
boolean |
true |
Requires a confirmation add_on to be present if the password strategy is used with the same identity_field. |
auth_method{: #authentication-strategies-google-auth_method } |
nil | :client_secret_basic | :client_secret_post | :client_secret_jwt | :private_key_jwt |
:client_secret_post |
The authentication strategy used, optional. If not set, no authentication will be used during the access token request. |
client_secret{: #authentication-strategies-google-client_secret } |
(any, any -> any) | module | String.t |
The OAuth2 client secret. Required if :auth_method is :client_secret_basic, :client_secret_post or :client_secret_jwt. Takes either a module which implements the AshAuthentication.Secret behaviour, a 2 arity anonymous function or a string. |
|
trusted_audiences{: #authentication-strategies-google-trusted_audiences } |
(any, any -> any) | module | list(any) | nil |
A list of audiences which are trusted. Takes either a module which implements the AshAuthentication.Secret behaviour, a 2 arity anonymous function or a string. |
|
private_key{: #authentication-strategies-google-private_key } |
(any, any -> any) | module | String.t |
The private key to use if :auth_method is :private_key_jwt. Takes either a module which implements the AshAuthentication.Secret behaviour, a 2 arity anonymous function or a string. |
|
code_verifier{: #authentication-strategies-google-code_verifier } |
boolean |
false |
Boolean to generate and use a random 128 byte long url safe code verifier for PKCE flow, optional, defaults to false. When set to true the session params will contain :code_verifier, :code_challenge, and :code_challenge_method params |
authorization_params{: #authentication-strategies-google-authorization_params } |
(any, any -> any) | module | keyword | nil |
[scope: "email profile"] |
Any additional parameters to encode in the request phase. eg: authorization_params scope: "openid profile email" |
registration_enabled?{: #authentication-strategies-google-registration_enabled? } |
boolean |
true |
If enabled, new users will be able to register for your site when authenticating and not already present. If not, only existing users will be able to authenticate. |
register_action_name{: #authentication-strategies-google-register_action_name } |
atom |
The name of the action to use to register a user, if registration_enabled? is true. Defaults to register_with_<name> See the "Registration and Sign-in" section of the strategy docs for more. |
|
sign_in_action_name{: #authentication-strategies-google-sign_in_action_name } |
atom |
The name of the action to use to sign in an existing user, if sign_in_enabled? is true. Defaults to sign_in_with_<strategy>, which is generated for you by default. See the "Registration and Sign-in" section of the strategy docs for more information. |
|
identity_resource{: #authentication-strategies-google-identity_resource } |
module | false |
false |
The resource used to store user identities, or false to disable. See the User Identities section of the strategy docs for more. |
identity_relationship_name{: #authentication-strategies-google-identity_relationship_name } |
atom |
:identities |
Name of the relationship to the provider identities resource |
identity_relationship_user_id_attribute{: #authentication-strategies-google-identity_relationship_user_id_attribute } |
atom |
:user_id |
The name of the destination (user_id) attribute on your provider identity resource. Only necessary if you've changed the user_id_attribute_name option of the provider identity. |
openid_configuration_uri{: #authentication-strategies-google-openid_configuration_uri } |
(any, any -> any) | module | String.t |
"/.well-known/openid-configuration" |
The URI for the OpenID provider |
client_authentication_method{: #authentication-strategies-google-client_authentication_method } |
"client_secret_basic" | "client_secret_post" | "client_secret_jwt" | "private_key_jwt" | "none" |
"client_secret_post" |
The client authentication method to use. |
openid_configuration{: #authentication-strategies-google-openid_configuration } |
nil | %{optional(String.t) => any} |
The OpenID configuration. If not set, the configuration will be retrieved from openid_configuration_uri. |
|
id_token_signed_response_alg{: #authentication-strategies-google-id_token_signed_response_alg } |
"HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "ES256" | "ES384" | "ES512" | "PS256" | "PS384" | "PS512" | "Ed25519" | "Ed25519ph" | "Ed448" | "Ed448ph" | "EdDSA" |
"RS256" |
The id_token_signed_response_alg parameter sent by the Client during Registration. |
id_token_ttl_seconds{: #authentication-strategies-google-id_token_ttl_seconds } |
nil | pos_integer |
The number of seconds from iat that an ID Token will be considered valid. |
|
nonce{: #authentication-strategies-google-nonce } |
boolean | (any, any -> any) | module | String.t |
true |
A function for generating the session nonce, true to automatically generate it with AshAuthentication.Strategy.Oidc.NonceGenerator, or false to disable. |
Target: AshAuthentication.Strategy.OAuth2