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"
Destination="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…
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" /> </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>
> Till "saml-admins(a)swamid.se" <saml-admins(a)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
>> 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