Hej igen Mats!
Kan tillägga att vi inte har angett supportedPrincipals varken för authn/MFA eller
authn/TOTP i authn/general-authn.xml, utan endast via properties
idp.authn.TOTP.supportedPrincipals och idp.authn.TOTP.supportedPrincipals i
authn/authn.properties. Jag har för mig att det är det "nya" sättet att göra
dessa inställningar.
Med vänliga hälsningar / Best regards
Björn Wiberg
Uppsala universitet / Uppsala University
Avdelningen för universitetsgemensam IT / University IT Services
Infrastruktur / Infrastructure
Tjänstedrift / Service Operations
Från: Björn Wiberg <bjorn.wiberg(a)uu.se>
Skickat: den 11 oktober 2024 09:44
Till: 'Mats Luspa' <mats.luspa(a)irf.se>
Kopia: 'saml-admins(a)swamid.se' <saml-admins(a)swamid.se>
Ämne: [Saml-admins] Re: MFA i shibboleth
Hej Mats!
Misstänker att du måste ange att även authn/TOTP stödjer de MFA-klasser som du vill
stödja, och alltså inte att "bara" authn/MFA gör det.
Du skulle då kunna behöva lägga till även denna property i authn/authn.properties om du
inte redan gjort det:
idp.authn.TOTP.supportedPrincipals = \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken, \
saml2/https://refeds.org/profile/mfa
(Vi har inte tagit med
saml1/https://refeds.org/profile/mfa varken i
idp.authn.MFA.supportedPrincipals eller idp.authn.TOTP.supportedPrincipals eftersom vi
inte stödjer SAML1.)
Hoppas att detta kanvara till hjälp!
Med vänliga hälsningar / Best regards
Björn Wiberg
Uppsala universitet / Uppsala University
Avdelningen för universitetsgemensam IT / University IT Services
Infrastruktur / Infrastructure
Tjänstedrift / Service Operations
Från: Mats Luspa via Saml-admins <saml-admins(a)lists.sunet.se
<mailto:saml-admins@lists.sunet.se> >
Skickat: den 11 oktober 2024 09:14
Till: saml-admins(a)swamid.se <mailto:saml-admins@swamid.se>
Ämne: [Saml-admins] Re: MFA i shibboleth
Hej!
Jag kunde inte släppa detta eftersom WebAuthn verkar dröja ett tag. Men i alla fall det
ser ut att lyckas med TOTP förutom det sista steget då idp:n inte verkar signalera på
korrekt sätt att MFA lyckats till SP:n. Så här står det i log-filerna:
2024-10-10 18:29:12,250 - INFO
[net.shibboleth.idp.plugin.authn.totp.impl.TOTPCredentialValidator:185] - Credential
Validator DefaultTOTPValidator: Login by 'matsl' succeeded
2024-10-10 18:29:12,331 - WARN
[net.shibboleth.idp.authn.impl.AttributeSourcedSubjectCanonicalization:175] - Profile
Action AttributeSourcedSubjectCanonicalization: No attributes found, canonicalization not
possible
2024-10-10 18:29:12,334 - INFO
[net.shibboleth.idp.authn.impl.SelectSubjectCanonicalizationFlow:60] - Profile Action
SelectSubjectCanonicalizationFlow: Moving incomplete flow c14n/attribute to intermediate
set, reselecting a different one
2024-10-10 18:29:12,350 - WARN [net.shibboleth.idp.authn.impl.FinalizeAuthentication:168]
- Profile Action FinalizeAuthentication: Authentication result for flow authn/MFA did not
satisfy the request
TOTP-valideringen går igenom men ändå så upfylls inte kraven. Kraven från SP:n är enligt
konfiguration:
<RequireAll>
ShibRequestSetting authnContextClassRef
https://refeds.org/profile/mfa
require authnContextClassRef
https://refeds.org/profile/mfa
require valid-user
</RequireAll>
Jag har även kollat vad som skickas från SP:n och det är:
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceURL=
<https://apache2-sp-provider-shibboleth-test-mfa.internal.irf.se/Shibboleth.sso/SAML2/POST>
"https://apache2-sp-provider-shibboleth-test-mfa.internal.irf.se/Shibboleth.sso/SAML2/POST"
Destination= <https://testidpshibboleth.irf.se/idp/profile/SAML2/Redirect/SSO>
"https://testidpshibboleth.irf.se/idp/profile/SAML2/Redirect/SSO"
ID="_a9a4ec59b279c17b58296213b4c9bc0b"
IssueInstant="2024-10-10T18:43:30Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Version="2.0"> <saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://apache2-sp-provider-shibboleth-test-mfa.internal.irf.se/Shibboleth.sso/Metadata</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="1" /> <samlp:RequestedAuthnContext>
<saml:AuthnContextClassRef
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://ref…
</samlp:RequestedAuthnContext> </samlp:AuthnRequest>
Transitionsmappen för mfa ser ut så här:
<util:map id="shibboleth.authn.MFA.TransitionMap">
<entry key="">
<bean parent="shibboleth.authn.MFA.Transition"
p:nextFlow="authn/Password" />
</entry>
<entry key="authn/Password">
<bean parent="shibboleth.authn.MFA.Transition"
p:nextFlow="authn/TOTP" />
</entry>
</util:map>
Man loggar in som vanligt via lösenordsdialog. Sedan dyker TOTP-dialogen upp där man
skriver in koden så att säga. Efter detta kommer alltså svaret från Idp:n enligt:
Status: urn:oasis:names:tc:SAML:2.0:status:Responder
Sub-Status: urn:oasis:names:tc:SAML:2.0:status:NoAuthnContext
Message: An error occurred.
I log-filerna allltså så meddelas det att TOTP validerats. Felmeddelandet verkar tyda på
auhnContextClassRef inte har blivit satt i Idp:n. Det är där jag inte är klar på var man
sätter authnContextClassref eller hur det skall signaleras till sp:n att TOTP supportas
och har validerats korrekt.
Jag har försökt sätta detta i authn/general-authn.xml utan att resultatet förbättrats:
<bean p:id="authn/MFA" parent="shibboleth.AuthenticationFlow">
<property name="supportedPrincipals"> <list> <bean
parent="shibboleth.SAML2AuthnContextClassRef" c:classRef=
<https://refeds.org/profile/mfa> "https://refeds.org/profile/mfa" />
</list> </property> </bean>
I authn/authn.properties har jag satt följande vad gäller MFA:
idp.authn.MFA.supportedPrincipals = \ saml2/http://id.elegnamnden.se/loa/1.0/loa3, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocol, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Password, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken, \
saml1/urn:oasis:names:tc:SAML:1.0:am:password, \
saml2/https://refeds.org/profile/mfa, \
saml1/https://refeds.org/profile/mfa
idp.authn.TOTP.authenticator = net.shibboleth.idp.authn.impl.TOTPAuthenticator
idp.authn.TOTP.secretAttribute = totpSecret idp.authn.TOTP.tokenSeedAttribute = totpSecret
idp.authn.TOTP.tokenLength = 6 idp.authn.TOTP.maxClockSkew = PT30S
idp.authn.TOTP.authenticationDuration = PT15M idp.authn.flows = MFA|Password|TOTP
Är det någon som kan ha en idé vad problemet kan vara? Kanske någon som lyckats med MFA?
Jag antar att jag kommer att stöta på samma problem med WebAuthn också.
/MVH Mats
Den 2024-09-27 kl. 18:29, skrev Mats Luspa:
Ok, jag förstår detta. Men det skulle varit intressant att få reda på vad problemet består
i. Men det är nog bäst att vänta med detta tills passkeys kommer för Shibboleth.
/MVH Mats
Den 2024-09-27 kl. 16:32, skrev Pål Axelsson:
Hej Mats,
VI rekommenderar att inte införa TOTP som andra faktor eftersom det är en nätfiskesårbar
teknik. Vidare står det i nuvarande tillitsprofiler som guidance att TOTP kommer att
plockas bort som godkänd teknik under 2025 och i kommande förslag om uppdatering av
tillitsprofilerna att mjukvarubaserad TOTP inte är tillåten efter årsskiftet 2025/26.
Den teknik som primärt ersätter TOTP är passkeys och fysiska säkerhetsnycklar. Shibboleth
Identty Provider kommer få officiellt stöd för detta senare i år om jag förstått
konsortiet korrekt.
Pål
------ Originalmeddelande ------
Från "Mats Luspa via Saml-admins" <saml-admins(a)lists.sunet.se
<mailto:saml-admins@lists.sunet.se> >
Till <mailto:saml-admins@swamid.se> "saml-admins(a)swamid.se"
<saml-admins(a)swamid.se <mailto:saml-admins@swamid.se> >
Datum 2024-09-27 15:19:35
Ämne [Saml-admins] MFA i shibboleth
Hej!
Jag har försökt implementera MFA i shibboleth med TOTP. Jag skickar i bilagan
dokumentationen hur jag gjort.
I slutet av dokumentationen ser ni problemet jag stöter på. Jag antar att en del av er
redan implementerat MFA med lyckat resultat och kanske kan se något uppenbart fel i
konfigurationen.
/MVH Mats
-- --
Mats Luspa
Phone: +46 (0)980 79 022
Cellular phone: +46 (0)725813330
Institutet för rymdfysik Fax: +46 (0)980 79 050
Swedish Institute of Space Physics email: matsl(a)irf.se <mailto:matsl@irf.se>
Visiting/Delivery address: Bengt Hultqvists väg 1, SE-981 92 Kiruna
Postal address: Box 812, SE-981 28 Kiruna
--
PGP Public Key:
https://www.irf.se/pgp/matsl
Digital vcard:
https://www.irf.se/vcard/mats.luspa
VARNING: Klicka inte på länkar och öppna inte bilagor om du inte känner igen avsändaren
och vet att innehållet är säkert.
CAUTION: Do not click on links or open attachments unless you recognise the sender and
know the content is safe.
VARNING: Klicka inte på länkar och öppna inte bilagor om du inte känner igen avsändaren
och vet att innehållet är säkert.
CAUTION: Do not click on links or open attachments unless you recognise the sender and
know the content is safe.