pulumi-fusionauth
Version:
A Pulumi package for managing FusionAuth instances.
222 lines (221 loc) • 13.2 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
* ## # LinkedIn Identity Provider Resource
*
* The LinkedIn identity provider type will use OAuth 2.0 to authenticate a user with LinkedIn. It will also provide a
* `Login with LinkedIn` button on FusionAuth’s login page that will direct a user to the LinkedIn login page.
* Additionally, after successful user authentication, this identity provider will call LinkedIn’s `/v2/me` and
* `/v2/emailAddress` APIs to load additional details about the user and store them in FusionAuth.
*
* The email address returned by the LinkedIn `/v2/emailAddress` API will be used to create or look up the existing user.
* Additional claims returned by LinkedIn can be used to reconcile the User to FusionAuth by using a LinkedIn Reconcile
* lambda. Unless you assign a reconcile lambda to this provider, only the email address will be used from the available
* claims returned by LinkedIn.
*
* FusionAuth will also store the LinkedIn `accessToken` returned from the login endpoint in the `identityProviderLink`
* object. This object is accessible using the Link API.
*
* The `identityProviderLink` object stores the token so that you can use it in your application to call LinkedIn APIs on
* behalf of the user if desired.
*
* [LinkedIn Identity Providers API](https://fusionauth.io/docs/v1/tech/apis/identity-providers/linkedin)
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as fusionauth from "pulumi-fusionauth";
*
* const linkedin = new fusionauth.FusionAuthIdpLinkedIn("linkedin", {
* applicationConfigurations: [{
* applicationId: fusionauth_application.myapp.id,
* createRegistration: true,
* enabled: true,
* }],
* buttonText: "Login with LinkedIn",
* debug: false,
* enabled: true,
* clientId: "9876543210",
* clientSecret: "716a572f917640698cdb99e9d7e64115",
* scope: "r_emailaddress r_liteprofile",
* });
* ```
*/
export declare class FusionAuthIdpLinkedIn extends pulumi.CustomResource {
/**
* Get an existing FusionAuthIdpLinkedIn resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: FusionAuthIdpLinkedInState, opts?: pulumi.CustomResourceOptions): FusionAuthIdpLinkedIn;
/**
* Returns true if the given object is an instance of FusionAuthIdpLinkedIn. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is FusionAuthIdpLinkedIn;
/**
* The configuration for each Application that the identity provider is enabled for.
*/
readonly applicationConfigurations: pulumi.Output<outputs.FusionAuthIdpLinkedInApplicationConfiguration[] | undefined>;
/**
* The top-level button text to use on the FusionAuth login page for this Identity Provider.
*/
readonly buttonText: pulumi.Output<string>;
/**
* The top-level LinkedIn client id for your Application. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
*/
readonly clientId: pulumi.Output<string>;
/**
* The top-level client secret to use with the LinkedIn Identity Provider when retrieving the long-lived token. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
*/
readonly clientSecret: pulumi.Output<string>;
/**
* Determines if debug is enabled for this provider. When enabled, an Event Log is created each time this provider is invoked to reconcile a login.
*/
readonly debug: pulumi.Output<boolean | undefined>;
/**
* Determines if this provider is enabled. If it is false then it will be disabled globally.
*/
readonly enabled: pulumi.Output<boolean | undefined>;
/**
* The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.
*/
readonly lambdaReconcileId: pulumi.Output<string>;
/**
* The linking strategy to use when creating the link between the Facebook Identity Provider and the user.
* The valid values are:
* * `CreatePendingLink` - Do not automatically link, instead return a pending link identifier that can be used to link to an existing user.
* * `LinkAnonymously` - Always create a link based upon the unique Id returned by the identity provider. A username or email is not required and will not be used to link the user. A reconcile lambda will not be used in this configuration.
* * `LinkByEmail` - Link to an existing user based upon email. A user will be created with the email returned by the identity provider if one does not already exist.
* * `LinkByEmailForExistingUser` - Only link to an existing user based upon email. A user will not be created if one does not already exist with email returned by the identity provider.
* * `LinkByUsername` - Link to an existing user based upon username. A user will be created with the username returned by the identity provider if one does not already exist.
* * `LinkByUsernameForExistingUser` - Only link to an existing user based upon username. A user will not be created if one does not already exist with username returned by the identity provider.
*/
readonly linkingStrategy: pulumi.Output<string>;
/**
* The top-level scope that you are requesting from LinkedIn.
*/
readonly scope: pulumi.Output<string | undefined>;
/**
* The configuration for each Tenant that limits the number of links a user may have for a particular identity provider.
*/
readonly tenantConfigurations: pulumi.Output<outputs.FusionAuthIdpLinkedInTenantConfiguration[] | undefined>;
/**
* Create a FusionAuthIdpLinkedIn resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: FusionAuthIdpLinkedInArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering FusionAuthIdpLinkedIn resources.
*/
export interface FusionAuthIdpLinkedInState {
/**
* The configuration for each Application that the identity provider is enabled for.
*/
applicationConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInApplicationConfiguration>[]>;
/**
* The top-level button text to use on the FusionAuth login page for this Identity Provider.
*/
buttonText?: pulumi.Input<string>;
/**
* The top-level LinkedIn client id for your Application. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
*/
clientId?: pulumi.Input<string>;
/**
* The top-level client secret to use with the LinkedIn Identity Provider when retrieving the long-lived token. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
*/
clientSecret?: pulumi.Input<string>;
/**
* Determines if debug is enabled for this provider. When enabled, an Event Log is created each time this provider is invoked to reconcile a login.
*/
debug?: pulumi.Input<boolean>;
/**
* Determines if this provider is enabled. If it is false then it will be disabled globally.
*/
enabled?: pulumi.Input<boolean>;
/**
* The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.
*/
lambdaReconcileId?: pulumi.Input<string>;
/**
* The linking strategy to use when creating the link between the Facebook Identity Provider and the user.
* The valid values are:
* * `CreatePendingLink` - Do not automatically link, instead return a pending link identifier that can be used to link to an existing user.
* * `LinkAnonymously` - Always create a link based upon the unique Id returned by the identity provider. A username or email is not required and will not be used to link the user. A reconcile lambda will not be used in this configuration.
* * `LinkByEmail` - Link to an existing user based upon email. A user will be created with the email returned by the identity provider if one does not already exist.
* * `LinkByEmailForExistingUser` - Only link to an existing user based upon email. A user will not be created if one does not already exist with email returned by the identity provider.
* * `LinkByUsername` - Link to an existing user based upon username. A user will be created with the username returned by the identity provider if one does not already exist.
* * `LinkByUsernameForExistingUser` - Only link to an existing user based upon username. A user will not be created if one does not already exist with username returned by the identity provider.
*/
linkingStrategy?: pulumi.Input<string>;
/**
* The top-level scope that you are requesting from LinkedIn.
*/
scope?: pulumi.Input<string>;
/**
* The configuration for each Tenant that limits the number of links a user may have for a particular identity provider.
*/
tenantConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInTenantConfiguration>[]>;
}
/**
* The set of arguments for constructing a FusionAuthIdpLinkedIn resource.
*/
export interface FusionAuthIdpLinkedInArgs {
/**
* The configuration for each Application that the identity provider is enabled for.
*/
applicationConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInApplicationConfiguration>[]>;
/**
* The top-level button text to use on the FusionAuth login page for this Identity Provider.
*/
buttonText: pulumi.Input<string>;
/**
* The top-level LinkedIn client id for your Application. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
*/
clientId: pulumi.Input<string>;
/**
* The top-level client secret to use with the LinkedIn Identity Provider when retrieving the long-lived token. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
*/
clientSecret: pulumi.Input<string>;
/**
* Determines if debug is enabled for this provider. When enabled, an Event Log is created each time this provider is invoked to reconcile a login.
*/
debug?: pulumi.Input<boolean>;
/**
* Determines if this provider is enabled. If it is false then it will be disabled globally.
*/
enabled?: pulumi.Input<boolean>;
/**
* The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.
*/
lambdaReconcileId?: pulumi.Input<string>;
/**
* The linking strategy to use when creating the link between the Facebook Identity Provider and the user.
* The valid values are:
* * `CreatePendingLink` - Do not automatically link, instead return a pending link identifier that can be used to link to an existing user.
* * `LinkAnonymously` - Always create a link based upon the unique Id returned by the identity provider. A username or email is not required and will not be used to link the user. A reconcile lambda will not be used in this configuration.
* * `LinkByEmail` - Link to an existing user based upon email. A user will be created with the email returned by the identity provider if one does not already exist.
* * `LinkByEmailForExistingUser` - Only link to an existing user based upon email. A user will not be created if one does not already exist with email returned by the identity provider.
* * `LinkByUsername` - Link to an existing user based upon username. A user will be created with the username returned by the identity provider if one does not already exist.
* * `LinkByUsernameForExistingUser` - Only link to an existing user based upon username. A user will not be created if one does not already exist with username returned by the identity provider.
*/
linkingStrategy?: pulumi.Input<string>;
/**
* The top-level scope that you are requesting from LinkedIn.
*/
scope?: pulumi.Input<string>;
/**
* The configuration for each Tenant that limits the number of links a user may have for a particular identity provider.
*/
tenantConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInTenantConfiguration>[]>;
}