MFAType.java
package access.manage;
import lombok.Getter;
import java.util.Arrays;
public enum MFAType {
multipleauthn("http://schemas.microsoft.com/claims/multipleauthn"),
mfa("https://refeds.org/profile/mfa"),
mobileOneFactorContract("urn:oasis:names:tc:SAML:2.0:ac:classes:MobileOneFactorContract"),
mobileOneFactorUnregistered("urn:oasis:names:tc:SAML:2.0:ac:classes:MobileOneFactorUnregistered"),
password("urn:oasis:names:tc:SAML:2.0:ac:classes:Password"),
transparentAuthnContext("transparent_authn_context"),
linkedInstitution("https://eduid.nl/trust/linked-institution"),
validateNames("https://eduid.nl/trust/validate-names"),
validateNamesExternal("https://eduid.nl/trust/validate-names-external"),
affiliationStudent("https://eduid.nl/trust/affiliation-student");
@Getter
private final String value;
MFAType(String value) {
this.value = value;
}
public int getRequiredLoaLevel() {
if (this.equals(password) || this.equals(transparentAuthnContext)) {
return 1;
}
return 2;
}
public static MFAType fromValue(String value) {
return Arrays.stream(values())
.filter(t -> t.value.equals(value))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Unknown MFAType level: " + value));
}
}