====== MFA ====== **Dokument je zatím stále v přípravě. V žádném případě toto nastavení neprovádějte na produkčním IdP!** Tento dokument popisuje zprovoznění dvoufaktorového ověřování na straně Shibboleth IdP a zavedení podpory pro [[https://refeds.org/profile/mfa|profil REFEDS MFA]]. Jsou zde popsány konfigurační kroky na straně IdP a také je zde ukázka pro rozšíření LDAP schématu o atribut, do kterého je nutné uložit "seedu" pro TOTP. Vše, co je zde sepsáno, vychází z následujících oficiálních dokumentů: * [[https://shibboleth.atlassian.net/wiki/spaces/KB/pages/1474297850/Supporting+the+REFEDS+MFA+Profile|Supporting the REFEDS MFA Profile]] * [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631610/MultiFactorAuthnConfiguration|MultiFactorAuthnConfiguration]] * [[https://shibboleth.atlassian.net/wiki/spaces/IDPPLUGINS/pages/1376878877/TOTP|TOTP]] ===== Modul MFA ===== Jako první krok je zapnutí modulu MFA v IdP: cd /opt/shibboleth-idp ./bin/module.sh -e idp.authn.MFA Nyní je potřeba provést úpravy v konfiguračním souboru pro autentizaci, tedy v //conf/authn/authn.properties//: vim conf/authn/authn.properties Nastavení toku (idp.authn.flows) na MFA a přidání podpory pro profil REFEDS MFA: idp.authn.flows = MFA idp.authn.MFA.supportedPrincipals = \ saml2/https://refeds.org/profile/mfa, \ saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport, \ saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Password, \ saml1/urn:oasis:names:tc:SAML:1.0:am:password idp.authn.TOTP.supportedPrincipals = \ saml2/https://refeds.org/profile/mfa, \ saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken Dále upravíme v konfiguračním souboru //conf/authn/mfa-authn-config.xml// MFA: vim conf/authn/mfa-authn-config.xml Níže uvedený kód způsobí, že uživatel je při autentizaci vyzván k zadání svého uživatelského jména a hesla. Pokud jsou zadané údaje správné a služba vyžaduje dvoufaktorové ověření, je uživateli předložena žádost o ověření druhého faktoru. Pokud služba doufaktorové ověření nepotřebuje, bude uživatel po zadání správného jména a hesla přesměrován na službu, aniž by musel řešit druhý faktor: ===== Rozšíření TOTP ===== Druhý krok na IdP je zapnutí rozšíření TOTP, které je součástí projektu Shibboleth IdP. cd /opt/shibboleth-idp ./bin/plugin.sh -I net.shibboleth.idp.plugin.authn.totp Dále je potřeba definovat, ve kterém atributu je v LDAPu uložen tzv. "TOTP seed", na jehož základě se počítá časově omezený jednorázový kód. vim conf/attribute-resolver.xml Atribut se může jmenovat libovolně, nicméně důrazně doporučujeme použít atribut nazvaný ''tokenSeeds'', protože to je výchozí hodnota definovaná v Shibbolethu. Pokud se atribut jmenuje jinak, je nutná dodatečná konfigurace IdP a to považujeme za zbytečné. Restartováním Jetty zajistíme nahrání nové konfigurace IdP: systemctl restart jetty9 ===== Atribut tokenSeeds v LDAP serveru ===== V LDAP serveru musí být dostupný výše uvedený atribut ''tokenSeeds'', který obsahuje "seed" pro TOTP. Definice atributu ''tokenSeeds'' v rámci schématu: attributeTypes: ( tokenSeeds-oid NAME 'tokenSeeds' DESC 'TOTP Seed' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE X-ORIGIN 'CESNET' ) Atribut ''tokenSeeds'' definujeme ve schématu jako volitelný, proto je potřeba umístit ho do "MAY": objectClasses: ( tenOrgPerson-oid NAME 'tenOrgPerson' SUP top STRUCTURAL MAY ( aci $ tokenSeeds $ cesnetEmplID $ authorisedMail $ rfc822ForwardingMailbox $ memberOf ) X-ORIGIN 'cesnet.cz' ) ===== Testování ===== Pro testování vícefaktorového ověřování na IdP je dostupná služba na serveru [[https://mfa.eduid.cz|mfa.eduid.cz]]. ===== Vyžadování MFA na službě ===== [[https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2114781453/Requiring+Multi-Factor+Authentication|Dokumentace]] k vyžadování MFA na webu projektu Shibboleth.