Externí přihlašování

Z Prirucky

Rozšíření aplikace Externí přihlašování umožňuje využít přihlašování do aplikace prostřednictvím služby třetí strany. Přihlašování je založeno na standardu OAuth 2.0 nebo SAML 2.0. Díky využití přihlašování prostřednictvím OAuth 2.0 nebo SAML 2.0 není nutné mít zřízeno heslo pro přístup do portálu. Je možno se přihlásit prostřednictvím účtu Google, Microsoft, případně vlastního přihlašování, které dokáže komunikovat s aplikací KS Portál prostřednictvím tohoto standardu. Případně za využití OpenID protokolu. V těchto službách tak může být nastaveno více-faktorové ověření, na základě něhož dojde k předání příslušného uživatelského jména, které je následně spárováno na základě parametru ZdrojOsCisla.

Pro využití je nutno zaregistrovat si aplikaci KS-Portál jako důvěryhodnou a využít tak principů tohoto standardu. Je tak možno dosáhnout vyšší bezpečnosti při autentizaci a autorizaci uživatelů při přihlašování do portálu. Na straně portálu je pak vyžadováno nastavení konektivity s autentizační službou a nastavení uživatelských jmen uživatelům KS Portálu, které budou následně korektně asociována s údaji, které vrátí autentizační služba. Díky využití tohoto rozšíření nejsou uživatelé nuceni zadávat své přihlašovací údaje do portálu a bezpečnostní politika hesel tak zůstává svěřena třetí straně. Komunikace mezi KS Portálem a autentizační službou musí probíhat prostřednictvím zabezpečeného přenosu s využitím šifrování pomocí TLS za využití protokolu HTTPS.

Princip činnosti

Uživatel přistoupí na stránku určenou pro přihlašování do portálu, například : „https://ksprogram.cz/demo/ksportal/Public/ExternalLogin.aspx“ . Uživatel je poté přesměrován na stránku autentizační služby například stránka Googlu, Microsoft, apod. Při tomto přesměrování dojde k odeslání informací, potřebných pro žádost autentizačního serveru. Uživatel následně zadá své přihlašovací údaje do tohoto účtu. Provede veškeré úkony spojené s přihlašováním a je přesměrován zpět na portál. Tato odpověď již obsahuje informace, které slouží KS Portálu pro vytvoření dohody s autentizačním severem, který následně portálu předá přihlašovací jméno. V případě, že je k dispozici více databází, je zobrazena stránka s možností výběru databáze, následným stiskem tlačítka Zvolit, dojde k přihlášení uživatele. Předaný údaj z autentizační služby je následně spárován s uživatelským jménem přiřazeným danému uživateli KS Portálu nebo osobní číslem, dle nastavení. Uživatel se následně ocitne na stránce po přihlášení, například „https://ksprogram.cz/demo/ksportal/Default.aspx“.

Konfigurace OAuth 2.0 přihlašování

Je také možno použít certifikát pro ověřování a nevyužívat tak ClientSecret. Úpravy, které se odlišují jsou označeny stejným číslem, ale s hvězdičkou.

1.) Zapnutí rozšíření Externí přihlašování prostřednictvím C/S aplikace KS Mzdy PROFi v agendě Nápověda - Rozšíření aplikace

2.) Upravení web.config

    <!--Parametry pro zprovoznění autorizace pomocí Oauth2-->
    <!--Nazev externi sluzby pro overovani uzivatelu (pokud je vyuzivana)-->
    <add key="ExternalLogin" value="OAUTH2"/>
    <!--ID klienta-->
    <add key="ClientId" value="" />
    <!--Client Secret - pokud není vyžadováno, nevyplňuje se-->
    <add key="ClientSecret" value="" />
    <!--Scope, služby, ke kterým žádáte přístup pomocí Oauth2, oddělují se znaménkem + např. " openid+offline_access " -->
    <add key="scope" value="https://graph.microsoft.com/.default" />
    <!--State - kontrolní hodnota pro autorizační server, nastavuje se na 0/1-->
    <add key="State" value="1"/>
    <!--Authentication endpoint - adresa, proti které se provádí získání autorizačního kódu, uvádí se celá adresa např. " https://login.microsoftonline.com/{id}/oauth2/v2.0/authorize "-->
    <add key="AuthenticationEndpoint" value="" />
    <!--Redirect uri - adresa na kterou se provádí přesměrování po přihlášení, musí být shodná s registrovanou adresou v auth. serveru, vždy musí končit /Public/ExternalLogin.aspx-->
    <add key="RedirectUri" value="https://localhost:44301/ksportal/Public/ExternalLogin.aspx" />
    <!--Token endpoint - adresa proti které se provádí získávání tokenu např. " https://login.microsoftonline.com/{id}/oauth2/v2.0/token "-->
    <add key="TokenEndpoint" value="" />
    <!--Userinfo endpoint - adresa proti které se provádí získávání uživatelského jména např. " https://microsoft.com/oauth2/userinfo "-->
    <add key="UserinfoEndpoint" value="https://graph.microsoft.com/v1.0/me" />
    <!--Parametr uživatelského jména OAuth2 - parametr JSON, který obsahuje uživatelské jméno pro přístup do KSPortálu např: username,userPrincipalName -->
    <add key="OauthUsername" value="userPrincipalName" />
    <!--Logout endpoint - adresa pro odhlášení uživatele např. " https://login.microsoftonline.com/{id}/oauth2/v2.0/logout "-->
    <add key="LogoutEndpoint" value="" />
    <!--Post logout redirect uri - adresa na kterou se má po odhlášení přesměrovat, musí být shodná s registrovanou adresou v auth. serveru, vždy musí končit  /Public/ExternalLogin.aspx-->
    <add key="LogoutRedirectUri" value="https://localhost:44301/ksportal/Public/ExternalLogin.aspx" />
    <!--Nonce -  nastavuje se na 0/1-->
    <add key="Nonce" value="1"/>
    <!--Response type - např. code, code+id_token-->
    <add key="ResponseType" value="code"/>
    <!--Response mode -->
    <add key="ResponseMode" value="form_post"/>

2*.) Upravení web.config s certifikátem

    <!--Parametry pro zprovoznění autorizace pomocí Oauth2-->
    <!--Nazev externi sluzby pro overovani uzivatelu (pokud je vyuzivana)-->
    <add key="ExternalLogin" value="OAUTH2"/>
    <!--ID klienta-->
    <add key="ClientId" value="" />
    <!--TenantId-->
    <add key="TenantId" value=""/>
    <!--Kryptografický otisk certifikátu, který se má použít-->
    <add key="OauthCertThumbprint" value=""/>
    <!--Scope, služby, ke kterým žádáte přístup pomocí Oauth2, oddělují se znaménkem + např. " openid+offline_access " -->
    <add key="scope" value="https://graph.microsoft.com/.default" />
    <!--State - kontrolní hodnota pro autorizační server, nastavuje se na 0/1-->
    <add key="State" value="1"/>
    <!--Authentication endpoint - adresa, proti které se provádí získání autorizačního kódu, uvádí se celá adresa např. " https://login.microsoftonline.com/{id}/oauth2/v2.0/authorize "-->
    <add key="AuthenticationEndpoint" value="" />
    <!--Redirect uri - adresa na kterou se provádí přesměrování po přihlášení, musí být shodná s registrovanou adresou v auth. serveru, vždy musí končit /Public/ExternalLogin.aspx-->
    <add key="RedirectUri" value="https://localhost:44301/ksportal/Public/ExternalLogin.aspx" />
    <!--Token endpoint - adresa proti které se provádí získávání tokenu např. " https://login.microsoftonline.com/{id}/oauth2/v2.0/token "-->
    <add key="TokenEndpoint" value="" />
    <!--Userinfo endpoint - adresa proti které se provádí získávání uživatelského jména např. " https://microsoft.com/oauth2/userinfo "-->
    <add key="UserinfoEndpoint" value="https://graph.microsoft.com/v1.0/me" />
    <!--Parametr uživatelského jména OAuth2 - parametr JSON, který obsahuje uživatelské jméno pro přístup do KSPortálu např: username,userPrincipalName -->
    <add key="OauthUsername" value="userPrincipalName" />
    <!--Logout endpoint - adresa pro odhlášení uživatele např. " https://login.microsoftonline.com/{id}/oauth2/v2.0/logout "-->
    <add key="LogoutEndpoint" value="" />
    <!--Post logout redirect uri - adresa na kterou se má po odhlášení přesměrovat, musí být shodná s registrovanou adresou v auth. serveru, vždy musí končit  /Public/ExternalLogin.aspx-->
    <add key="LogoutRedirectUri" value="https://localhost:44301/ksportal/Public/ExternalLogin.aspx" />
    <!--Nonce -  nastavuje se na 0/1-->
    <add key="Nonce" value="1"/>
    <!--Response type - např. code, code+id_token-->
    <add key="ResponseType" value="code"/>
    <!--Response mode -->
    <add key="ResponseMode" value="form_post"/>

3.) Kontrola nastavení párování loginů

<!--SparovaniUziv povoli volnejsi kontrolu loginu, bez kontroly domeny a velikosti pismen. Hodnoty: BezDomeny, CI, CI-BezDomeny. 
(při form. prihlaseni a TypOvereni=ad by mělo být CI nebo CI-BezDomeny, neboť AD je case insenstive, tj. domena\jiRI.novAK by se následně nespároval s loginem DOMENA\jiri.novak v DB)-->
<add key="SparovaniUziv" value="CI-BezDomeny"/>

4.) Nastavení výchozí stránky pro přihlášení

<forms name="Ksprtl" loginUrl="~/Public/ExternalLogin.aspx" defaultUrl="~/Default2.aspx" />

5.) Důležitý je parametr ZdrojOsCisla

pokud není vyplněn, berou se osobní čísla z aplikace a tedy je nutné mít naplněnu agendu Uživatelé KS Portálu, kde musí být navedeny Loginy k daným osobním číslům, lze použít například i AD

6*.) Instalace certifikátu na stanici

Je nutné nainstalovat certifikát na stanici, kde běží IIS server, dále pak je nutné ve správci certifikátů počítačů, nastavit pro tento certifikát práva pro čtení na privátní klíč pro uživatele "IIS AppPool\{název_poolu_KSPortálu}", např. "IIS AppPool\KsAppPool"

Konfigurace SAML 2.0 přihlašování

1.) Zapnutí rozšíření Externí přihlašování prostřednictvím C/S aplikace KS Mzdy PROFi v agendě Nápověda - Rozšíření aplikace

2.) Upravení web.config

   <!--Nazev externi sluzby pro overovani uzivatelu (pokud je vyuzivana)-->
    <add key="ExternalLogin" value="SAML2"/>
    <!--SAML 2 - URL k autentizačnímu serveru např. https://sso3-prod.microsoft.com/adfs/ls/-->
    <add key="SAML2LoginUrl" value=""/>
    <!--SAML 2 - URL k autentizačnímu serveru např. https://demo.ksprogram.cz/KS-portal/Public/ExternalLogin.aspx -->
    <add key="SAML2RedirectURI" value=""/>
    <!--SAML 2 - Entity ID poskytovatele SAML např. https://demo.ksprogram.cz/KS-portal/-->
    <add key="SAML2EntityID" value=""/>
    <!--SAML 2 - Certifikát-->
    <add key="SAML2Cert" value=" -----BEGIN CERTIFICATE----- 
                                 -----END CERTIFICATE-----
                               "/>

3.) Nastavit výchozí databázi, ke které se portál připojí, na první místo + parametr umístěný pod connection stringem, parametr je nyní zakomentován

<dataConfiguration defaultDatabase="{nazev_db}"/>

4.) Kontrola nastavení párování loginů

<!--SparovaniUziv povoli volnejsi kontrolu loginu, bez kontroly domeny a velikosti pismen. Hodnoty: BezDomeny, CI, CI-BezDomeny. 
(při form. prihlaseni a TypOvereni=ad by mělo být CI nebo CI-BezDomeny, neboť AD je case insenstive, tj. domena\jiRI.novAK by se následně nespároval s loginem DOMENA\jiri.novak v DB)-->
<add key="SparovaniUziv" value="CI-BezDomeny"/>

5.) Nastavení výchozí stránky pro přihlášení

<forms name="Ksprtl" loginUrl="~/Public/ExternalLogin.aspx" defaultUrl="~/Default2.aspx" />

6.) Důležitý je parametr ZdrojOsCisla

pokud není vyplněn, berou se osobní čísla z aplikace a tedy je nutné mít naplněnu agendu Uživatelé KS Portálu, kde musí být navedeny Loginy k daným osobním číslům, lze použít například i AD

Logování OAUTH/SAML komunikace

Při počátečním nastavování je téměř nutností logovat chyby vrácené externím serverem, např. že chybí oprávnění pro Microsoft Graph.

  • Pro SAML se automaticky loguje do %Temp%\SAMLTrace.txt.
  • Logování pro OAUTH je nutno zapnout parametrem ve web.config:
<add key="OAuthTempLog" value="a" />
hd 69595

Odkazy