<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Aura – authentication</title>
    <link>/categories/authentication/</link>
    <description>Recent content in authentication on Aura</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="/categories/authentication/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/account-linking-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/account-linking-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;account-linking-dialog&#34;&gt;account-linking dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;account-linking&lt;/strong&gt;&lt;/em&gt; dialog, one of the dialogs that handles users&amp;rsquo; account linking&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/linking/src/account-linking/account-linking-dialog.ts&#34;&gt;&lt;em&gt;&lt;strong&gt;account-linking&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt; is included in the global &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/tree/master/packages/linking&#34;&gt;&lt;em&gt;&lt;strong&gt;linking&lt;/strong&gt;&lt;/em&gt; library&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is in charge of handling user&amp;rsquo;s account linking for channels using &lt;a href=&#34;../../docs/components/channels/authentication/&#34;&gt;integrated authentication&lt;/a&gt;, that is, channels that already have a proper user&amp;rsquo;s identifier that should be linked with the corresponding &lt;code&gt;auraId&lt;/code&gt; and that cannot handle &lt;strong&gt;Kernel&lt;/strong&gt; authentication directly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WebClient&lt;/li&gt;
&lt;li&gt;Facebook&lt;/li&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This dialog launches authentication in &lt;strong&gt;Kernel&lt;/strong&gt; based on browser navigation. It includes several steps to validate the Terms and Conditions of the services and to launch the user&amp;rsquo;s autentication in the OB authenticator and in &lt;strong&gt;Kernel&lt;/strong&gt; that, in the end, would register the &lt;code&gt;auraId&lt;/code&gt; in Aura users&amp;rsquo; database.&lt;/p&gt;
&lt;h2 id=&#34;environment-variables&#34;&gt;Environment variables&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Property&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Type&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Scope&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;LINKING_FP_ACCESS_SESSIONS_ENDPOINT&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;string&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Local&lt;/td&gt;
&lt;td&gt;URL to &lt;strong&gt;Kernel&lt;/strong&gt; Access Sessions API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;strong&gt;LINKING_FP_CALLBACK_LOGIN_URL&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;string&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Local&lt;/td&gt;
&lt;td&gt;URL to redirect to authentification login&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;strong&gt;LINKING_FP_CALLBACK_LOGOUT_URL&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;string&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Local&lt;/td&gt;
&lt;td&gt;URL to redirect to authentification logout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;em&gt;LINKING_TERMS_AND_CONDITIONS_URL&lt;/em&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;string&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Local&lt;/td&gt;
&lt;td&gt;URL to terms and conditions HTML file. By default: &lt;code&gt;/documents/termsandconditions.html&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;em&gt;SAFETY_CHECK_ENDPOINT&lt;/em&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;string&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Local&lt;/td&gt;
&lt;td&gt;URL API client endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/</guid>
      <description>
        
        
        &lt;h1 id=&#34;global-authentication-dialogs&#34;&gt;Global authentication dialogs&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global authentication dialogs support different types of authentication in Aura&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;Global authentication dialogs include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linking dialogs:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/account-linking-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;account-linking&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/get-oauth-url-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;get-oauth-url&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/account-remove-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;account-remove&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/seamless-account-remove-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;seamless-account-remove&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/onboarding-whatsapp/&#34;&gt;&lt;em&gt;&lt;strong&gt;onboarding-whatsapp&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/whatsapp-login-otp-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;whatsapp-otp-login&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/whatsapp-logout-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;whatsapp-logout&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/channels/authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/channels/authentication/</guid>
      <description>
        
        
        &lt;h1 id=&#34;channels-authentication&#34;&gt;Channels authentication&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;How an Aura channel can authenticate users, in different scenarios&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;scenarios-for-users-authentication&#34;&gt;Scenarios for users&amp;rsquo; authentication&lt;/h2&gt;
&lt;p&gt;Regarding authentication, an Aura channel can deal with two different scenarios, which are fully explained in the succeeding sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dealing with authenticated users&lt;/li&gt;
&lt;li&gt;Dealing with anonymous users&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;authenticated-users&#34;&gt;Authenticated users&lt;/h3&gt;
&lt;p&gt;Aura supports two types of authentication when referring to channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Integrated (or federated) authentication&lt;/strong&gt;: &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is responsible for the user&amp;rsquo;s authentication, i.e., when the channel sends its user identifier to &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;, and the bot executes the user authentication.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-integrated authentication&lt;/strong&gt;: the channel executes all the authentication processes for the user and sends to Aura the resulting &lt;code&gt;authorization_id&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;integrated-authentication&#34;&gt;Integrated authentication&lt;/h4&gt;
&lt;p&gt;The case of integrated authentication is characterized by the fact that the Aura channel is the one starting the authentication process, sending an account linking request to the &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; instance including the channel own user identifier, that will be used as a base for building an &lt;code&gt;auraId&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is used for those channels that cannot launch a &lt;strong&gt;Kernel&lt;/strong&gt; authentication process themselves, before making a request to Aura. Therefore, all the authentication process is managed by the &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; instance making requests to &lt;strong&gt;Kernel&lt;/strong&gt; when needed.&lt;/p&gt;
&lt;p&gt;The message sent from the Aura channel to the &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; instance could contain a text similar to &amp;ldquo;I want to authenticate myself&amp;rdquo;, or an &lt;code&gt;auraCommand&lt;/code&gt; with an account linking intent, or a use case that requires authentication.&lt;/p&gt;
&lt;p&gt;Account linking &lt;code&gt;auraCommand&lt;/code&gt; example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;from&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;lt;channel-user-identifier&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a40000&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;channelData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;auraCommand&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;suggestion&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;intent.account.linking&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Channels with this authentication are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/channels/whatsapp-channel/&#34;&gt;&lt;strong&gt;WhatsApp&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;non-integrated-authentication&#34;&gt;Non-integrated authentication&lt;/h4&gt;
&lt;p&gt;In the case of non-integrated Authentication, the Aura channel must be registered as a &lt;strong&gt;Kernel&lt;/strong&gt; Platform application, so it can have access to the &lt;strong&gt;Kernel&lt;/strong&gt; Platform APIs.&lt;/p&gt;
&lt;p&gt;Further information regarding this application registration process can be found in the &lt;strong&gt;Kernel&lt;/strong&gt; documentation about &lt;a href=&#34;https://developers.baikalplatform.com/docs/latest/apis/getting-credentials/&#34;&gt;getting credentials&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Please, remember to request access to the proper &lt;a href=&#34;https://developers.baikalplatform.com/apis/userprofile/es-pro/v3/#section/Authentication&#34;&gt;purpose&lt;/a&gt; that enables accessing to Aura Users APIs.&lt;/p&gt;
&lt;p&gt;Once the Aura channel has been registered as an application, it will have access to the &lt;strong&gt;Kernel&lt;/strong&gt; Platform &lt;code&gt;Aura-Services API&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The Aura channel should launch an authorize request to authenticate the end user. Follow &lt;strong&gt;Kernel&lt;/strong&gt; documentation about &lt;a href=&#34;https://developers.baikalplatform.com/docs/latest/apis/api-access/&#34;&gt;how to consume APIs&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Afterwards, the Aura channel should make a request to &lt;a href=&#34;https://developers.baikalplatform.com/apis/aura-services/&#34;&gt;Aura getAuraId API&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Firstly, the channel generates a 3-legged access token for the given user, including the purpose to access the Aura-Services APIs.&lt;/li&gt;
&lt;li&gt;Then, it makes a request to the &lt;code&gt;GetAuraId&lt;/code&gt; endpoint.
&lt;ul&gt;
&lt;li&gt;The channel must call this API each time there is a new authorization session in the channel, because &lt;code&gt;aura_id&lt;/code&gt; is only valid while the session or &lt;code&gt;authorization_id&lt;/code&gt; is valid.&lt;/li&gt;
&lt;li&gt;Remember to log every request to &lt;strong&gt;Kernel&lt;/strong&gt; including the &lt;code&gt;x-correlator&lt;/code&gt; header (correlation id for the different services), so all requests can be traced in the channel, Aura and Kernel, and it is possible to have an E2E view of each request. The same correlator should be used in all requests related to a single user interaction, it should be sent to Aura, &lt;strong&gt;Kernel&lt;/strong&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;You can cache the &lt;code&gt;aura_id&lt;/code&gt; and send requests to Aura using that &lt;code&gt;aura_id&lt;/code&gt;&lt;/strong&gt;. If the &lt;code&gt;aura_id&lt;/code&gt; is no longer valid, you will receive an error message like:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Channel data v3 (current):&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;lt;error_message&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;inputHint&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;acceptingInput&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;channelData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ERROR.USER.UNAUTHENTICATED&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;params&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;auraId&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;received_aura_id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Invalid aura user&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Channel data v1 (obsolete):&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;lt;error_message&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;inputHint&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;acceptingInput&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;channelData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;UNAUTHENTICATED&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;received_aura_id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Invalid auraId&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you receive an error like these, you will need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refresh the &lt;code&gt;authorization_id&lt;/code&gt; by calling the authorize method from Telefonica &lt;strong&gt;Kernel&lt;/strong&gt; &lt;code&gt;auth-server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Call the &lt;a href=&#34;https://developers.baikalplatform.com/apis/aura-services/&#34;&gt;getAuraId API&lt;/a&gt; again from &lt;strong&gt;Kernel&lt;/strong&gt; APIs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Telefonica &lt;strong&gt;Kernel&lt;/strong&gt; Platform API calls the &lt;strong&gt;aura-services&lt;/strong&gt; API that will validate if the user already exists or not.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the user exists with the same &lt;code&gt;user_id&lt;/code&gt;, &lt;code&gt;authentication_context&lt;/code&gt; and &lt;code&gt;authorization_id&lt;/code&gt;, the same user data will be returned to &lt;strong&gt;Kernel&lt;/strong&gt; and to the Aura channel, including the &lt;code&gt;aura_id&lt;/code&gt; of the user.&lt;/li&gt;
&lt;li&gt;If the user does not exist, it is created in the Aura users&amp;rsquo; database and the result is returned to the Aura channel, which can get the &lt;code&gt;aura_id&lt;/code&gt; of the user.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Just in the case of &lt;strong&gt;non integrated authentication&lt;/strong&gt;, the &lt;code&gt;aura_id&lt;/code&gt; returned by &lt;strong&gt;Kernel&lt;/strong&gt; API will be used as the &lt;code&gt;from.id&lt;/code&gt; property in all requests to be sent to the &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; instance. For &lt;strong&gt;integrated authentication&lt;/strong&gt; the channel just sends its internal user identifier.&lt;/p&gt;
&lt;h3 id=&#34;anonymous-users&#34;&gt;Anonymous users&lt;/h3&gt;
&lt;p&gt;Anonymous users can only access a &lt;strong&gt;limited set of use cases&lt;/strong&gt; that do not need granted access to any user data, for instance: generic questions or greetings.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If a channel allows anonymous users, it would send an autogenerated &lt;code&gt;aura_id&lt;/code&gt; in the &lt;code&gt;from.id&lt;/code&gt; property of the request in UUID format.&lt;/li&gt;
&lt;li&gt;If the channel does not support anonymous users, the user will be considered unauthenticated and will return an error like in &lt;a href=&#34;#non-integrated-authentication&#34;&gt;non-integrated authentication&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Usually, if a use case is for channels that support anonymous users, an authentication dialog will be launched, specific to each channel, which will allow the user to log in to access the use case. Channels that support anonymous users usually have integrated (federated) authentication. Some authentication use cases are SMS-OTP in WhatsApp channel.&lt;/p&gt;
&lt;p&gt;If the intention of the user is one of the admitted without authentication, the corresponding response will be sent. Otherwise, a prompt to launch the authentication process or a message informing that anonymous users cannot access that information will be returned.&lt;/p&gt;
&lt;h2 id=&#34;users-expiration&#34;&gt;Users expiration&lt;/h2&gt;
&lt;p&gt;The time to expire a user can be configured by channel with the configuration variable &lt;code&gt;authorizationIdExpiration&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-file-lines fa-xl&#34; style=&#34;color: #0d5de7;&#34;&gt;&lt;/i&gt; Learn how to do it in the document &lt;a href=&#34;../../docs/developers-workspace/channels-management/users-expiration-configuration/&#34;&gt;Configure users expiration&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/get-oauth-url-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/get-oauth-url-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;get-oauth-url-dialog&#34;&gt;get-oauth-url dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;get-oauth-url&lt;/strong&gt;&lt;/em&gt; dialog, one of the dialogs that handles users&amp;rsquo; account linking&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/linking/src/account-linking/account-get-oauth-url-dialog.ts&#34;&gt;&lt;em&gt;&lt;strong&gt;get-oauth-url&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt; is included in the global &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/tree/master/packages/linking&#34;&gt;&lt;em&gt;&lt;strong&gt;linking&lt;/strong&gt;&lt;/em&gt; library&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This dialog returns to the channel the oauth URL to launch the account linking.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/account-remove-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/account-remove-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;account-remove-dialog&#34;&gt;account-remove dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;account-remove&lt;/strong&gt;&lt;/em&gt; dialog, one of the dialogs that handles users&amp;rsquo; account linking&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/linking/src/account-linking/account-remove-dialog.ts&#34;&gt;&lt;em&gt;&lt;strong&gt;account-remove&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt; is included in the global &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/tree/master/packages/linking&#34;&gt;&lt;em&gt;&lt;strong&gt;linking&lt;/strong&gt;&lt;/em&gt; library&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This dialog launches the logout process in &lt;strong&gt;Kernel&lt;/strong&gt; based on browser navigation.&lt;/p&gt;
&lt;p&gt;It includes several steps to remove the login session from &lt;strong&gt;Kernel&lt;/strong&gt; and in the OB authenticator that, in the end, would remove the &lt;code&gt;auraId&lt;/code&gt; from the Aura Users&amp;rsquo; database.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/seamless-account-remove-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/seamless-account-remove-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;seamless-account-remove-dialog&#34;&gt;seamless-account-remove dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;seamless-account-remove&lt;/strong&gt;&lt;/em&gt; dialog, one of the dialogs that handles users&amp;rsquo; account linking&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/tree/master/packages/linking/src/seamless-account-remove&#34;&gt;&lt;em&gt;&lt;strong&gt;seamless-account-remove&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt; is included in the global &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/tree/master/packages/linking&#34;&gt;&lt;em&gt;&lt;strong&gt;linking&lt;/strong&gt;&lt;/em&gt; library&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This dialog launches seamless logout in &lt;strong&gt;Kernel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It counts on several steps to remove the login session from &lt;strong&gt;Kernel&lt;/strong&gt; and in the OB authenticator that, in the end, would remove the &lt;code&gt;auraId&lt;/code&gt; from the Aura users’ database.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/onboarding-whatsapp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/onboarding-whatsapp/</guid>
      <description>
        
        
        &lt;h1 id=&#34;onboarding-whatsapp-dialog&#34;&gt;onboarding-whatsapp dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the global &lt;em&gt;&lt;strong&gt;onboarding-whatsapp&lt;/strong&gt;&lt;/em&gt; dialog for WhatsApp channel&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/onboarding/src/onboarding-whatsapp-dialog.ts&#34;&gt;&lt;em&gt;&lt;strong&gt;onboarding-whatsapp&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt; is a simple dialog that returns some personalized messages for WhatsApp or other channel.&lt;/p&gt;
&lt;p&gt;The dialog returns three messages with all the information necessary for the user&amp;rsquo;s onboarding and the Terms and Conditions acceptance.&lt;/p&gt;
&lt;p&gt;According to the &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-processes/authentication/users-types/&#34;&gt;type of user (authenticated or anonymous)&lt;/a&gt;, the messages will be different:&lt;/p&gt;
&lt;p&gt;For anonymous users, the messages returned will be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;onboarding:onboarding.welcome&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onboarding:onboarding.privacy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onboarding:onboarding.terms-and-conditions&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For authenticated users, the returned messages will be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;onboarding:onboarding.auth.welcome&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onboarding:onboarding.auth.privacy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onboarding:onboarding.auth.terms-and-conditions&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If one of these texts are filled with &lt;code&gt;&amp;quot; &amp;quot;&lt;/code&gt; in the locales, this message will not be sent, excepting &lt;code&gt;terms-and-conditions&lt;/code&gt; text, which is mandatory. The first two messages, &lt;code&gt;welcome&lt;/code&gt; and &lt;code&gt;privacy&lt;/code&gt;, are only sent the first time this user arrives to the dialog. In succeeding interactions, only &lt;code&gt;terms-and-conditions&lt;/code&gt; message will be returned.&lt;/p&gt;
&lt;h2 id=&#34;terms-and-conditions&#34;&gt;Terms and conditions&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; redirects to this dialog when Terms and Conditions settings are set, and the user has not accepted them yet.&lt;/p&gt;
&lt;p&gt;More info about Terms and Conditions settings and flows &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-processes/authentication/terms-and-conditions/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/whatsapp-login-otp-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/whatsapp-login-otp-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;whatsapp-otp-login-dialog&#34;&gt;whatsapp-otp-login dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;whatsapp-otp-login&lt;/strong&gt;&lt;/em&gt; dialog, that handles SMS-OTP authentication in this channel&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;whatsapp-otp-login&lt;/strong&gt;&lt;/em&gt; dialog is a global dialog to make the user login in the WhatApp channel.&lt;/p&gt;
&lt;p&gt;Currently, it only supports SMS-OTP authentication.&lt;/p&gt;
&lt;p&gt;Access to the &lt;strong&gt;Kernel&lt;/strong&gt; &lt;a href=&#34;https://developers.baikalplatform.com/apis/whatsapp/&#34;&gt;WhatsApp API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;#x1f4c3; Check the dialog&amp;rsquo;s code in the &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/linking/src/whatsapp/whatsapp-otp-login-dialog.ts&#34;&gt;aura-bot-libraries Github repository&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;flows&#34;&gt;Flows&lt;/h2&gt;
&lt;p&gt;The dialog flow is divided in several steps, which are described in the following sections.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/wa-sms-otp-login-flow.png&#34; alt=&#34;Texto alternativo&#34;&gt;&lt;/p&gt;
&lt;p&gt;Additionally, a sequence flow is included in &lt;a href=&#34;../../docs/developers-workspace/general-operation-system/main-flows/whatsapp-flows/#whatsapp-phone-otp-loa2-authentication&#34;&gt;Operational flowcharts: WhatsApp OTP (LoA2) authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;check-if-the-user-is-already-authenticated&#34;&gt;Check if the user is already authenticated&lt;/h3&gt;
&lt;p&gt;When the dialog flow starts, it checks if the current user is already authenticated, verifying if the type of user is anonymous.&lt;/p&gt;
&lt;p&gt;If so, the dialog flow ends with the text resource &lt;code&gt;login.otp.already.signin&lt;/code&gt;. If not, it starts a sub-dialog to verify the phone number to send the SMS code.&lt;/p&gt;
&lt;h3 id=&#34;check-if-current-number-is-corporate&#34;&gt;Check if current number is corporate&lt;/h3&gt;
&lt;p&gt;In this step, if configured so, the system checks if the current phone number is corporate, to allow using it in next steps.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If check is not enabled or user is not corporate, go to the following step for &lt;a href=&#34;#prompt-a-phone-number&#34;&gt;prompting a new phone number&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Otherwise, ask the user if she wants to use current number.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;prompt-a-phone-number&#34;&gt;Prompt a phone number&lt;/h3&gt;
&lt;p&gt;This step prompts the user to enter the phone number he wants to log in with in Aura, thus the dialog will send the SMS-OTP code to that phone number.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the phone number format is correct:
&lt;ol&gt;
&lt;li&gt;If configured to &lt;a href=&#34;#check-if-current-number-is-corporate&#34;&gt;check the prompted number&lt;/a&gt; and the number is not corporate, ask for a new phone number (until max number of retries is reached).&lt;/li&gt;
&lt;li&gt;Otherwise, it starts a sub-dialog to verify the SMS authcode.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;If the format is wrong, the dialog will prompt again to enter with correct format until the maximum number of attempts is reached (See &lt;a href=&#34;#settings&#34;&gt;settings&lt;/a&gt; section). When the user reaches this maximum, the dialog ends with the text resource &lt;code&gt;login.otp.too.many.phone.kos&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To send this code to the user phone, the &lt;a href=&#34;https://developers.baikalplatform.com/apis/whatsapp/global-int-current/v1/#tag/Authentication/operation/Send-Email-OTP&#34;&gt;send code endpoint&lt;/a&gt; from &lt;strong&gt;Kernel&lt;/strong&gt; is called. This endpoint returns an &lt;code&gt;authentication_id&lt;/code&gt; that will be used in the next step to validate the OTP code.&lt;/p&gt;
&lt;h3 id=&#34;insert-sms-otp-code&#34;&gt;Insert SMS OTP code&lt;/h3&gt;
&lt;p&gt;This step prompts the user to enter the SMS authcode sent to phone number provided on the previous step.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When the user enters the correct code, the dialog starts the following step in order to register the user.&lt;/li&gt;
&lt;li&gt;If the authcode is wrong, the dialog will prompt again to enter the correct authcode until the maximum number of attempts is reached (See &lt;a href=&#34;#settings&#34;&gt;settings&lt;/a&gt; section).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the user reaches the maximum authcode attempts the dialog ends with the text resource &lt;code&gt;login.otp.too.many.sms.kos&lt;/code&gt;. A new code can be sent by sending the text resource &lt;code&gt;login.otp.newCode.command&lt;/code&gt; which makes the bot to send a new auth code to the phone number provided.&lt;/p&gt;
&lt;p&gt;To validate the code, the &lt;strong&gt;Kernel&lt;/strong&gt; &lt;a href=&#34;https://developers.baikalplatform.com/apis/whatsapp/global-int-current/v1/#operation/Validate-Phone-Authentication-Code&#34;&gt;validate code endpoint&lt;/a&gt; is called with the code received by the user and the &lt;code&gt;authentication_id&lt;/code&gt; returned in the previous api call. This call returns all the necessary data to register the user in Aura.&lt;/p&gt;
&lt;h3 id=&#34;register-user&#34;&gt;Register user&lt;/h3&gt;
&lt;p&gt;This step registers the user in Aura ecosystem and redirects to onboarding T&amp;amp;C with the intent &lt;code&gt;intent.onboarding.terms-and-conditions&lt;/code&gt; or the requested intent before authentication if T&amp;amp;C are already accepted.&lt;/p&gt;
&lt;p&gt;To do this registry, the method &lt;code&gt;GET /users/aura-id/{auraId}&lt;/code&gt; from &lt;a href=&#34;../../docs/components/aura-authentication-api/api-definition/aura-authentication-api/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; is called and the user is registered with the data obtained from &lt;strong&gt;Kernel&lt;/strong&gt; in the previous step.&lt;/p&gt;
&lt;p&gt;The redirect to onboarding (or the intent set) is done if the field &lt;code&gt;actions.afterLogin&lt;/code&gt; is present in the channel configuration. An example of this configuration is shown below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;whatsapp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;prefix&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;wa&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;whatsapp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;responseOptions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;versions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;v1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;singleMessage&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;actions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;afterLogin&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;redirect&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;action&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;REDIRECT.COMMAND&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;auraCommand&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;suggestion&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;intent.onboarding.terms-and-conditions&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This configuration is used to generate the &lt;a href=&#34;../../docs/components/aura-bridge/aura-bridge-processes/bridge-actions-resolution/&#34;&gt;redirect command&lt;/a&gt; that will be sent to launch the intent. If there is an intent requested before authentication and the T&amp;amp;C are already accepted, the intent set in configuration will be overwritten with the requested intent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt; The user can cancel login flow at any moment by sending the text resource &lt;code&gt;login.otp.cancel.command&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;sequence-diagram&#34;&gt;Sequence diagram&lt;/h2&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
    autonumber
    participant user
    participant auraBridge
    participant auraBot
    participant 4p
    participant auraAuth
    participant T&amp;amp;C API
    rect rgb(255, 255, 230)
    Note left of user: USER REQUESTS AN AUTHENTICATED UC
    user-&amp;gt;&amp;gt;auraBridge: I want to see my billing data
    auraBridge-&amp;gt;&amp;gt;auraBot: 
    auraBot-&amp;gt;&amp;gt;auraBot: Dialog needs auth and user is anonymous. Redirect to whatsapp login
    auraBot-&amp;gt;&amp;gt;auraBridge:  
    auraBridge-&amp;gt;&amp;gt;user: login.otp.phone.number: Please enter your phone number
    user-&amp;gt;&amp;gt;auraBridge: &amp;#43;34665762892
    auraBridge-&amp;gt;&amp;gt;auraBot: 
    auraBot-&amp;gt;&amp;gt;4p: Aura requests a new OTP sms
    4p-&amp;gt;&amp;gt;user: (SMS) login.otp.sms.code.message: Your verification code is 6789
    4p-&amp;gt;&amp;gt;auraBot: authorization_id
    auraBot-&amp;gt;&amp;gt;auraBridge: 
    auraBridge-&amp;gt;&amp;gt;user: login.otp.sms.sent.message: Please insert the code
    user-&amp;gt;&amp;gt;auraBridge: 6789
    auraBridge-&amp;gt;&amp;gt;auraBot: 
    auraBot-&amp;gt;&amp;gt;4p: Aura validates the code
    4p-&amp;gt;&amp;gt;auraBot: Returns user data
    auraBot-&amp;gt;&amp;gt;auraAuth: Register user
    auraAuth-&amp;gt;&amp;gt;auraBot: 200 OK
    alt
        Note left of T&amp;amp;C API: User already accepted authenticated T&amp;amp;C
        auraBot-&amp;gt;&amp;gt;T&amp;amp;C API: Checks terms and conditions
        T&amp;amp;C API-&amp;gt;&amp;gt;auraBot: 200 OK
        auraBot-&amp;gt;&amp;gt;auraBridge: Response &amp;#43; Redirect intent
        auraBridge-&amp;gt;&amp;gt;user: login.otp.success: Great! you are now signed in
        auraBridge-&amp;gt;&amp;gt;auraBot: intent.billing from redirect intent
        auraBot-&amp;gt;&amp;gt;auraBot: authenticates the user and executes the billing dialog
        auraBot-&amp;gt;&amp;gt;auraBridge: 
        auraBridge-&amp;gt;&amp;gt;user: &amp;#34;Here is your billing data&amp;#34;
    else
        Note left of T&amp;amp;C API: User needs to accept authenticated T&amp;amp;C
        auraBot-&amp;gt;&amp;gt;T&amp;amp;C API: Checks terms and conditions
        T&amp;amp;C API-&amp;gt;&amp;gt;auraBot: 404 Not found
        auraBot-&amp;gt;&amp;gt;auraBridge: Response &amp;#43; Redirect intent
        auraBridge-&amp;gt;&amp;gt;user: login.otp.success: Great! you are now signed in
        auraBridge-&amp;gt;&amp;gt;auraBot: intent.onboarding.terms-and-conditions from redirect intent
        auraBot-&amp;gt;&amp;gt;auraBot: authenticates the user and executes T&amp;amp;C dialog
        auraBot-&amp;gt;&amp;gt;auraBridge: 
        auraBridge-&amp;gt;&amp;gt;user: onboarding:onboarding.auth.welcome
        auraBridge-&amp;gt;&amp;gt;user: onboarding:onboarding.auth.privacy
        auraBridge-&amp;gt;&amp;gt;user: onboarding:onboarding.auth.terms-and-conditions
    else
        Note left of T&amp;amp;C API: Channel doesn&amp;#39;t have terms and conditions config
        auraBot-&amp;gt;&amp;gt;auraBridge: Response &amp;#43; Redirect intent
        auraBridge-&amp;gt;&amp;gt;user: login.otp.success: Great! you are now signed in
        auraBridge-&amp;gt;&amp;gt;auraBot: intent.billing from redirect intent
        auraBot-&amp;gt;&amp;gt;auraBot: authenticates the user and executes the billing dialog
        auraBot-&amp;gt;&amp;gt;auraBridge: 
        auraBridge-&amp;gt;&amp;gt;user: &amp;#34;Here is your billing data&amp;#34;
    end
end&lt;/pre&gt;
&lt;h2 id=&#34;botresponse-settings&#34;&gt;BotResponse settings&lt;/h2&gt;
&lt;p&gt;Currently, the dialog has a main intent &lt;code&gt;intent.authentication.login&lt;/code&gt; and three auxiliary intents: &lt;code&gt;otp-confirm-user-phone-number-dialog&lt;/code&gt;, &lt;code&gt;intent.authentication.otp.phone.number&lt;/code&gt; and &lt;code&gt;intent.authentication.otp.auth.code&lt;/code&gt;. These auxiliary intents are necessary to enable the flow between sub-dialogs.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;whatsapp-otp-login-dialog&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;intent.authentication.login&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;otp-confirm-user-phone-number-dialog&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;intent.otp.confirm.user.phone.number.dialog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;otp-phone-number-dialog&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;intent.authentication.otp.phone.number&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;otp-sms-auth-code-dialog&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;intent.authentication.otp.auth.code&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;settings&#34;&gt;Settings&lt;/h2&gt;
&lt;p&gt;This section lists and describes all the variables the &lt;em&gt;&lt;strong&gt;whatsapp-otp-login&lt;/strong&gt;&lt;/em&gt; dialog uses and that can be configured to adapt the environment:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Default value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;LINKING_FP_WHATSAPP_ENDPOINT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;WhatsApp API endpoint&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;LINKING_WA_MAX_FP_SEND_SMS_RETRIES&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Maximum SMS retries.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;LINKING_WA_MAX_AUTHCODE_RETRIES&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Maximum authcode retries.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;LINKING_WA_MAX_PHONENUMBER_RETRIES&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Maximum phonenumber retries.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/authentication-dialogs/whatsapp-logout-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/authentication-dialogs/whatsapp-logout-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;whatsapp-logout-dialog&#34;&gt;whatsapp-logout dialog&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;whatsapp-logout&lt;/strong&gt;&lt;/em&gt; dialog, that handles the log out process for this channel&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;whatsapp-logout&lt;/strong&gt;&lt;/em&gt; dialog is a global dialog in charge of the user&amp;rsquo;s logout in the WhatsApp channel.&lt;/p&gt;
&lt;p&gt;&amp;#x1f4c3; Check the dialog’s code in the &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/linking/src/whatsapp/whatsapp-logout-dialog.ts&#34;&gt;aura-bot-libraries Github repository&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;flows&#34;&gt;Flows&lt;/h2&gt;
&lt;p&gt;The flow of this dialog is simple. In the first step, a prompt is returned to the user to confirm if he wants to logout.&lt;/p&gt;
&lt;p&gt;After that, if he accepts, certain actions are performed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The user is deleted in Aura database calling the &lt;a href=&#34;https://developers.baikalplatform.com/apis/aura-services/global-int-current/v1/#operation/deleteAuraId&#34;&gt;&lt;em&gt;&lt;strong&gt;aura services&lt;/strong&gt;&lt;/em&gt; API&lt;/a&gt;. If this call fails, an error will be returned, and the logout will fail.&lt;/li&gt;
&lt;li&gt;The user is deleted in &lt;strong&gt;Kernel&lt;/strong&gt; calling the &lt;a href=&#34;https://developers.baikalplatform.com/docs/latest/apis/api-access/logout.html&#34;&gt;logout endpoint&lt;/a&gt;. If this call fails, the flow continues normally returning a success message to the user and only showing an error log.&lt;/li&gt;
&lt;li&gt;If the user is logged with LoA3, access session is deleted in &lt;strong&gt;Kernel&lt;/strong&gt; calling &lt;a href=&#34;https://developers.baikalplatform.com/apis/access-sessions/global-int-current/v1/#operation/deleteSignleAccessSessions&#34;&gt;access session delete endpoint&lt;/a&gt;. If this call fails, the flow continues normally returning a success message and only showing the error in logs.&lt;/li&gt;
&lt;li&gt;The local cache is set to invalid to force the refresh next time the user interacts with Aura.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/atria/technical-guidelines/o365-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/atria/technical-guidelines/o365-authentication/</guid>
      <description>
        
        
        &lt;h1 id=&#34;office-365-authentication&#34;&gt;Office 365 Authentication&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the Office 365 authentication made by &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;User authentication on &lt;a href=&#34;../../docs/atria/technical-guidelines/atria-web-interface/&#34;&gt;&lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt; web interface&lt;/a&gt; is integrated with Office 365, using one internal component component (&lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt;) and one external component (&lt;em&gt;&lt;strong&gt;keycloak&lt;/strong&gt;&lt;/em&gt;), managed by &lt;strong&gt;Novum&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; component works as a reverse proxy, receiving requests and redirecting them to &lt;em&gt;&lt;strong&gt;keycloak&lt;/strong&gt;&lt;/em&gt; in case they are not authenticated.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Keycloak&lt;/strong&gt;&lt;/em&gt; manages the application users and has a connector for Office 365, so it redirects to the Office365 login web to identify with the &lt;em&gt;&lt;a href=&#34;https://www.telefonica.com&#34;&gt;www.telefonica.com&lt;/a&gt;&lt;/em&gt; corporate account.&lt;/li&gt;
&lt;li&gt;In case of correct login, it loads the proxified web with a cookie (and optionally, other headers) where the user is already logged in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;authentication-workflow&#34;&gt;Authentication workflow&lt;/h2&gt;
&lt;p&gt;The authentication process will be transparent for the &lt;a href=&#34;../../docs/atria/technical-guidelines/atria-web-interface/&#34;&gt;&lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt; web interface&lt;/a&gt; and, therefore, for developers.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;atria&lt;/strong&gt;&lt;/em&gt; web interface may have no authentication at all, or a basic one, and &lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;keycloak&lt;/strong&gt;&lt;/em&gt; are in charge of the entire process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; component will be deployed, configured and operated by the Aura DevOps team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;keycloak&lt;/strong&gt;&lt;/em&gt; component will be managed by the Novum team, including granting access to a user list.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sequence-diagram&#34;&gt;Sequence diagram&lt;/h3&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
    actor Browser
    Browser-&amp;gt;&amp;gt;&amp;#43;OAuth2 Proxy: Request /*
    OAuth2 Proxy--&amp;gt;&amp;gt;-Browser: Redirect to Keycloak&amp;#39;s login page
    Browser-&amp;gt;&amp;gt;&amp;#43;Keycloak: User login
    Keycloak-&amp;gt;&amp;gt;Keycloak: O365 Login
    Keycloak--&amp;gt;&amp;gt;-Browser: Redirect to /oauth2/callback
    Browser-&amp;gt;&amp;gt;&amp;#43;OAuth2 Proxy: Request /oauth2/callback
    OAuth2 Proxy-&amp;gt;&amp;gt;&amp;#43;Keycloak: Get access token
    Keycloak--&amp;gt;&amp;gt;-OAuth2 Proxy: Send id &amp;amp; access token
    OAuth2 Proxy--&amp;gt;&amp;gt;-Browser: Send session cookie and redirect to /*
    Browser-&amp;gt;&amp;gt;&amp;#43;OAuth2 Proxy: Request /*
    OAuth2 Proxy-&amp;gt;&amp;gt;&amp;#43;Atria web interface: Request /*
    Atria web interface--&amp;gt;&amp;gt;-OAuth2 Proxy: HTTP response
    OAuth2 Proxy--&amp;gt;&amp;gt;-Browser: HTTP response&lt;/pre&gt;
&lt;h2 id=&#34;authentication-steps&#34;&gt;Authentication steps&lt;/h2&gt;
&lt;p&gt;The three main authentication steps are detailed below, together with the team in charge of its execution.&lt;/p&gt;
&lt;h3 id=&#34;1-installation&#34;&gt;1. Installation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A new environment must be created using the aurak8s installer, where &lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; will be installed and configured.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Responsible teams&lt;/strong&gt;: Novum&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Once installed, it is necessary to create a new client in &lt;strong&gt;keycloak&lt;/strong&gt;, with the redirection URL &lt;code&gt;https://&amp;lt;deployed-env&amp;gt;/oauth2/callback&lt;/code&gt; and create a user group with the members that will have access.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;oauth2-proxy-tips-from-cross-team&#34;&gt;OAuth2-proxy tips from Cross team&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; is designed to be installed one per environment.&lt;/li&gt;
&lt;li&gt;Redis is necessary, and one instance per environment is also required to be installed.&lt;/li&gt;
&lt;li&gt;In Kubernetes, virtualserver in Nginx is used to configured ingress traffic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;keycloak-tips-from-novum-team&#34;&gt;Keycloak tips from Novum team&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Login: The only login screen will be the one from Office 365.&lt;/li&gt;
&lt;li&gt;Logout: Usually, it is not required. If we want to use it, it will logout the user from O365 (for all web apps).&lt;/li&gt;
&lt;li&gt;CORS: Identify static REST endpoints and configure two different rules.&lt;/li&gt;
&lt;li&gt;Error codes: The web application will not see typically any auth error code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-requesting-access-for-users&#34;&gt;2. Requesting access for users&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Responsible teams&lt;/strong&gt;: Aura &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt; team and Novum&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The Aura &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt; team must pass a list to Novum team for requesting access for certain users.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each user must have the following data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Full name of the user&lt;/li&gt;
&lt;li&gt;Email: E-mail of the user&lt;/li&gt;
&lt;li&gt;Group: A list of keycloak groups to where the user must be added (typically, one per environment, &lt;em&gt;dev&lt;/em&gt;, &lt;em&gt;pre&lt;/em&gt; and &lt;em&gt;pro&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Novum team is in charge of providing access to these users.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-virtualserver&#34;&gt;3. Virtualserver&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Responsible teams&lt;/strong&gt;: Aura &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt; DevOps team&lt;/p&gt;
&lt;p&gt;Virtualserver is used to configured Nginx. We have two virtualserver in the authentication method:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;aura-services virtualserver&lt;/strong&gt;: we have to modify it to add two paths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;/aura-mf-base-atria&lt;/strong&gt;&lt;/em&gt;: redirect to &lt;em&gt;&lt;strong&gt;aura-mf-base-atria&lt;/strong&gt;&lt;/em&gt; if the user is logged in or if not to the next path.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;/oauth2/auth&lt;/strong&gt;&lt;/em&gt;: redirect to &lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; service.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;oauth virtualserver&lt;/strong&gt;:  redirect to &lt;em&gt;&lt;strong&gt;oauth2-proxy&lt;/strong&gt;&lt;/em&gt; service.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An example is shown below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aura-services virtualserver /aura-mf-base-atria&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    location /aura-mf-base-atria {
         auth_request /oauth2/auth;
         error_page 401 =302 https://auth-svc-ap-nine.auracognitive.com/oauth2/start?rd=$scheme://$host$request_uri;
         auth_request_set $user   $upstream_http_x_auth_request_user;
         auth_request_set $email  $upstream_http_x_auth_request_email;
         proxy_set_header X-User  $user;
         proxy_set_header X-Email $email;
         auth_request_set $token $upstream_http_authorization;
         proxy_set_header Authorization $token;
         auth_request_set $auth_cookie $upstream_http_set_cookie;
         add_header Set-Cookie $auth_cookie;
         auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;
         if ($auth_cookie ~* &amp;#34;(; .*)&amp;#34;) {
             set $auth_cookie_name_0 $auth_cookie;
             set $auth_cookie_name_1 &amp;#34;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;#34;;
         }
         # Send both Set-Cookie headers now if there was a second part
         if ($auth_cookie_name_upstream_1) {
             add_header Set-Cookie $auth_cookie_name_0;
             add_header Set-Cookie $auth_cookie_name_1;
         }
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host            $http_host;
         proxy_pass http://aura-mf-base-atria:4000/aura-mf-base-atria;
    }
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;aura-services virtualserver /oauth2/auth&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  - action:
      proxy:
        upstream: oauth2-proxy
    location-snippets: |
      proxy_pass_request_body off;
      proxy_set_header Content-Length &amp;#34;&amp;#34;;
    path: /oauth2/auth
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;oauth virtualserver /&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  routes:
  - action:
      proxy:
        upstream: oauth2-proxy
    path: /
  tls:
    secret: nginx-certificates
  upstreams:
  - name: oauth2-proxy
    port: 80
    service: oauth2-proxy
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
  </channel>
</rss>
