Deploying to Azure
Following these steps you will deploy the FIDO Connector app itself along with the underlying infrastructure and required configuration changes. Before you start the deployment, ensure that you have successfully completed the previous steps, and that you have the appropriate permissions to deploy Azure services. See Prerequisites.
Creating an API Token
To create a Yubico API authentication token, sign in to the Customer Portal with the account for the application that will be calling the YubiEnterprise API. Click the organization name on the top of the left menu and select Manage API token. In the token dialog that appears, click Create API token and save the token for future use. For more information, see Creating API Tokens.
Creating a Resource Group
Note
The Subscription Owner role or equivalent is required for this step.
To create a Resource group, do the following:
- Login to the Azure Portal.
- Search for Resource groups.
- Click Create.
- Select the appropriate Subscription and Region, and provide the appropriate Resource groupname, for example “Yubico FIDO Pre-reg Service”.
- Click Review + create.
Creating a Custom Role
Note
This step is optional if you have the Global Administrator role or, are the owner of the subscription. Otherwise, you will need a role that lets you create a Custom Role.
To create a Custom role, do the following:
- In a text editor, open the file yubico-fpr-deploy-custom-role-permissions.json and do the following:
- Find and replace
{role_name}with a descriptive role name, for example “Yubico FIDO Pre-reg Custom Role”. - Find and replace
{subscription_id}with the appropriate subscription ID. - Find and replace
{rg_name}with the appropriate resource group name.
- Find and replace
- Save the JSON file.
- In the Azure portal, go to the previously created Resource Group.
- Go to Access control (IAM), click Add and select “Add Custom Role”.
- For Baseline permissions, select “Start from JSON”.
- Select the previously edited yubico-fpr-deploy-custom-role-permissions.json.
- The Custom role name field and Assignable scopes tab should have been populated according to the updates made to the JSON file.
- Click Review + create.
- Verify that everything looks correct and click Create.
Assigning the Custom Role
Note
This step is optional if you have the Global Administrator role or, are the owner of the subscription.
To assign the Custom role to users, do the following:
- In the Azure portal, go to the previously created Resource Group.
- Go to Access control (IAM).
- Click Add > Add role assignment.
- Select the Privileged administrator roles tab.
- Search for and select the previously created Custom role name.
- Click Next.
- On the Members tab, verify that the selected role is correct, and select the appropriate members to assign this role to.
- Click Next.
- On the Conditions tab, verify that the selected role is correct, and select Allow user to assign all roles (highly privileged).
- Click Next.
- Click Review + assign.
- Verify the information and click Review + assign.
Verifying Custom Role Assignment
Note
This step is optional if you have the Global Administrator role or, are the owner of the subscription.
To verify custom role assignments, do the following:
- In the Azure portal, go to the previously created Resource Group.
- Go to Access control (IAM).
- Click Check access.
- Search for and select users previously assigned to the custom role.
- Under Role assignments, verify that the custom role was assigned to the user.
Deploying the ARM Template
Note
The previously created Custom Role, Global Administrator, or Subscription Owner role is required for this part of the deployment.
To deploy the ARM template, do the following:
- Sign in to the Azure portal.
- Search for and select Deploy a custom template.
- Click Build your own template in the editor.
- Click Load file, then select the ARM template file provided by Yubico.
- Click Save.
- In the configuration menu, provide the following values:
- Subscription: Select the appropriate subscription.
- Resource group: Select or create a resource group for this deployment.
- Region: Select the appropriate region.
- MS_Login_Online_Endpoint: Use default, only change if your tenant uses a different Microsoft endpoint.
- MS_Graph_Endpoint: Use default, only change if your tenant uses a different Microsoft endpoint.
- Azure_Mgmt_Endpoint: Use default, only change if your tenant uses a different Microsoft endpoint.
- Azure_Vault: Use default, only change if your tenant uses a different Microsoft Login endpoint.
- Key Vault_Resource_Name: Provide a unique name for your key vault instance.
- Azure_Storage: Use default, only change if your tenant uses a different Microsoft endpoint.
- Storage Account_Resource_Name: Provide a unique name for the storage instance.
- YED_API_TOKEN: Paste the value you saved when creating the API token.
- Container_App_Name: Provide a unique name in lower case.
- Container_Registry_Name: The Registry name provided by Yubico.
- Container_Image_Name_Tag: The Registry Container Image name and version Tag provided by Yubico.
- Container_Registry_User: The Registry user name provided by Yubico.
- Container_Registry_Password: The Registry password provided by Yubico.
- FIDO_Connector_Client_Id: Client ID value from the app registration.
- FIDO_Connector_Client_Secret: Client Secret value from the app registration.
- FIDO_Connector_Allowed_Audiences: Value from Exposing the API when registering the app. List of scopes/audiences that a client application must use for calling the app’s API. Default value
api://fido-connector-api.{verified domain name}. Ensure this is formatted as an array of strings, for example["scope_1", "scope_2"]. - FIDO_Connector_Allowed_Client_Apps: Value from Exposing the API when registering the app. List of app registrations that are allowed to call this app’s API, as registered in app registrations. The optional app registration, if performed, can be used as the ID string. Ensure that the formatting is an array of strings including each client app ID. Example:
["client_app_id_1"]. - Workflows_Send_shipment_pin_name: Use default, or set a name based on your preferred naming convention.
- The ARM template includes a reference implementation of the private endpoints listed below, used by the FIDO Connector Container app (default values do not need to be changed):
- virtualNetworkName: Use default, or set a name based on your preferred naming convention.
- virtualNetworkAddressPrefix: Use default, or set a desired IP address range.
- subnetName: Use default, or set a name based on preferred naming convention.
- subnetAddressPrefix: Use default, or set a desired IP address range.
- privateEndpointSubnetName: Use default, or set a name based on preferred naming convention.
- privateEndpointSubnetAddressPrefix: Use default, or set a desired IP address range.
- keyVaultPrivateEndpointName: Use default, or set a name based on preferred naming convention.
- tableStorageAccountPrivateEndpointName: Use default, or set a name based on preferred naming convention.
- For PingOne PingID:
- FIDO_Connector_Ping_Client_Id: Enter the value from Enabling the Worker App.
- FIDO_Connector_Ping_Client_Secret: Enter the value from Enabling the Worker App.
- For PingOne AIC:
- FIDO_Connector_PingOne_AIC_Client_Id: Enter the value from Enabling On-behalf Registration (AIC).
- FIDO_Connector_PingOne_AIC_Client_Secret: Enter the value from Enabling On-behalf Registration (AIC).
- Click Review + create.
- After successful deployment, verify that the resources were created.
- Open the Container app and save the Application Url value for the parameter
FIDO_Connector_Host_URLfor later use.
Configuring Container App Permissions
Note
This step requires the Subscription Owner role, or role that can create role assignments.
To configure Key Vault and Storage permissions for the Container App, do the following:
- In the Azure portal, go to Resource Group > Container App.
- In the left navigation, click Security > Identity.
- Click Azure role assignments.
- Ensure the correct subscription is selected.
- Click Add role assignment and and configure as follows:
- For Scope, select “Key Vault”.
- For Subscription, enter your subscription.
- For Resource, enter the Key Vault you deployed with this template.
- For Role, select “Key Vault Administrator”.
- Click Save.
- Click Add role assignment and configure as follows:
- For Scope, select “Storage”.
- For Subscription, enter your subscription.
- For Resource, enter the Storage Account you deployed with this template.
- For Role, select “Storage Table Data Contributor”.
- Click Save.
- Click Refresh and verify that the two roles were successfully added.
Authorizing Logic App Office 365 Usage
To authorize the Logic App to call the Outlook/Office365 connector, do the following:
- In the Azure portal, go to Resource Group > Send_shipment_pin Logic App.
- In the left navigation, click Development Tools > API connections.
- Select office365.
- Go to General > Edit API connection.
- Click Authorize.
- Click Authorize again.
- Sign in with the account that will be used as sender of FIDO Pre-reg PIN emails.
- After signing in, select Save.
Configuring Environment Variables
Note
To use PingOne PingID or PingOne AIC as the default IdP, you need to change the environment variables configured in the Container App using the values described in the following. Restart the application when done.
To configure environment variables for the Container app, do the following:
In the Azure portal, go to Resource Group > Send_shipment_pin Logic App.
Save the Workflow URL, this will be used for the
Send_PIN_URLvalue below.Go to Resource Group > Container App.
In the left navigation, click Application > Containers.
Select the Environment variables tab.
Update the value for EMAIL_API_SEND_ENDPOINT to the value of parameter
Send_PIN_URLsaved in step 2.Click Add and add the following Environment variables with source as “Manual Entry”:
For PingOne PingID:
Name Value IDP_DEFAULTpingonePINGONE_ENVIRONMENTYour PingOne PingID Environment ID, seePINGONE_DEFAULT_RELYING_PARTYpingone.com or custom value.PINGONE_AUTH_BASE_URLhttps://auth.pingone.com or custom value.PINGONE_API_BASE_URLhttps://api.pingone.com/v1 or or custom value.PINGONE_PRE_REGISTRATION_TIMEOUT_DAYS15For PingOne AIC:
Name Value IDP_DEFAULTping-aicPING_AIC_REALMYour PingOne AIC environment ID or realm name.PING_AIC_DEFAULT_RELYING_PARTYCustom value.PING_AIC_AUTH_BASE_URLCustom value.PING_AIC_API_BASE_URLCustom value.PING_AIC_PRE_REGISTRATION_TIMEOUT_DAYSPing AIC timeout is configured in the Journey.PING_AIC_JOURNEYRegistration Journey name, seeClick Save as a new revision.
Click Overview in the left navigation.
Stop then Start the container to ensure the new environment variables are loaded.