MPASSid lisätään ADFS:ään PowerShell komentojen avulla. Alla esimerkki Powershell-komennot, joilla MPASSid lisätään ADFS:ään. Komennoista on kaksi versiota riippuen siitä, että luetaanko MPASSid:n metadata internetin kautta vai paikallisesta kopiosta.
MPASSid:n lisääminen ADFS:ään
MPASSid:n metadata url-osoitteella
$name = "mpass-proxy"
$metadataUrl = "https://mpass-proxy.csc.fi/Shibboleth.sso/Metadata"
Add -ADFSRelyingPartyTrust -MetadataUrl $metadataUrl -Name $name -AutoUpdateEnabled $true -EncryptClaims $true -SignedSamlRequestsRequired $true -EncryptionCertificateRevocationCheck none -SigningCertificateRevocationCheck none
|
MPASSid:n metadata paikallisesti
...
Päivitä alla oleviin komentoihin metadatatiedoston sijainti ja nimi, jos käytit jotain toista tiedostonimeä.
$name = "mpass-proxy"
$metadataFile = "c:\<hakemisto>\mpass-proxy-metadata.xml"
Add -ADFSRelyingPartyTrust -MetadataFile $metadataFile -Name $name -EncryptClaims $true -SignedSamlRequestsRequired $true -EncryptionCertificateRevocationCheck none -SigningCertificateRevocationCheck none
Update -AdfsRelyingPartyTrust -TargetName $name -MetadataFile $metadataFile
|
MPASSid:lle lähetettävien attribuuttien määrittely
...
Päivitä alla oleviin komentoihin MPASSid:lle lähetettäviä attribuutteja vastaavat AD:n attribuutit. Types kohdassa määritellään minkä tyyppisenä attribuutit lähetetään MPASSid:lle ja query kohdassa määritellään mistä AD:n attribuutista vastaava attribuutti löytyy. Types ja query kohtien attribuuttien järjestys vastaa toisiaan.
MPASSid:n claim
...
rulejen määritys
$issuanceTransformRules = '@RuleName = "Send MPASSid Attributes"c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("mpassUserIdentity", "mpassGivenName", "mpassSurname", "mpassAccountName", "mpassCryptID", "mpassMunicipalityCode", "mpassSchoolCode", "mpassClassLevel", "mpassClassCode", "mpassUserRole"), query = ";objectGuiD,givenName,sn,userPrincipalName,
|
cryptIDmunicipalityCodeschoolCodeclassLevelclassCodeuserRole<userRole>;{0}", param = c.Value);' ;
$issuanceAuthorizationRules = '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");'
$name = "mpass-proxy"
Set -ADFSRelyingPartyTrust -TargetName $name -IssuanceAuthorizationRules $issuanceAuthorizationRules -IssuanceTransformRules $issuanceTransformRules
|
ADFS:n tiedot MPASSid:lle
ADFS:n tiedot pitää lisätä MPASSid:lle ennen kuin kirjautuminen toimii. Lisääminen tapahtuu ADFS:n metadatan avulla. Metadata löytyy oletuksen ADFS-palvelimelta osoitteesta https://<palvelimen_nimi>/FederationMetadata/2007-06/FederationMetadata.xml. Lähetä ADFS:n metadata osoitteeseen tuki@mpass.fi.
Claim Rulet
Alla esimerkki claim rule määrityksiä. Näitä voi kopioida ja liittää ADFS:n Relying Partyn määrityksiin ADFS:n hallintakonsolista. Määrityksiin pitää muokata mistä AD:n attribuutista MPASSid:lle lähetettävä attribuutti löytyy.
- Claim rule tekee kyselyn AD:lle ja hakee kyselyssä määritellyt attribuutit
- Types -kohdassa on määritelty minkä tyyppisinä attribuutit lähetetään MPASSid:lle ja query kohdassa on määritelty mistä AD:n attribuutista haluttu tieto löytyy.
- Types ja query kohtien järjestys vastaa toisiaan. Eli esimerkiksi mpassUserIdentity attribuutti haetaan AD:n objectGuid attribuutista.
- Voit lisätä, muuttaa ja poistaa attribuutteja tarvittessa. Jos esimerkiksi käyttäjän tiedoista AD:lla ei löydy kuntakoodia, niin poista types kohdasta "mpassMunicipalityCode" ja query kohdasta vastaava attribuutttiattribuutti.
Send MPASSid Attributes
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname" , Issuer == "AD AUTHORITY" ]
=> issue(store = "Active Directory" , types = ( "mpassUserIdentity" , "mpassAccountName" , "mpassGivenName" , "mpassSurname" , "mpassCryptID" , "mpassMunicipalityCode" , "mpassSchoolCode" , "mpassClassLevel" , "mpassClassCode" , "mpassUserRole" ), query = ";objectGuiD,userPrincipalName,givenName,sn,<cryptID>,<municipalityCode>,<schoolCode>,<classLevel>,<classCode>,<userRole>;{0}" , param = c.Value);
|
Esimerkkejä erilaisista claim ruleista
...
Kuntakoodin lähettäminen kiinteänä arvona
Send mpassMunicipalityCode
=> issue(Type = "mpassMunicipalityCode" , Value = "123" );
|
Numeerisen roolitiedon muuttaminen tekstimuotoiseksi
# Haetaan käyttäjän rooli AD:n employeeType attribuutista ja lisätään (add) se käyttäjän attribuutteihin
Add Employee Type as Role
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname" , Issuer == "AD AUTHORITY" ]
=> add(store = "Active Directory" , types = ( "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" ), query = ";employeeType;{0}" , param = c.Value);
# Tutkitaan roolin arvo ja lähetetään eteenpäin (issue) arvoa vastaava tekstimuotoinen rooli
Send mpassUserRole henklökunta
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" , Value =~ "^0" ]
=> issue(Type = "mpassUserRole" , Value = "henkilökunta" );
Send mpassUserRole oppilas
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" , Value =~ "^1" ]
=> issue(Type = "mpassUserRole" , Value = "oppilas" );
Send mpassUserRole opettaja
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" , Value =~ "^2" ]
=> issue(Type = "mpassUserRole" , Value = "opettaja
|
");
...
# Hakee luokka-asteen numero-kirjain muotoa olevasta luokkatiedosta. Esim. jos luokka on 3A, niin luokka-asteena välitetään
3
.
# Olettaa, että luokkatieto (mpassClassCode) on jo haettu aikaisemmissa claim ruleissa.
Send mpassClassLevel
c:[Type ==
, Value =~
"^[0-9]"
]
=> issue(Type =
"mpassClassLevel"
, Value = RegExReplace(c.Value,
"^(?<classLevel>[0-9]{1})(?<classLetter>[a-zA-Z]{1})$"
,
"${classLevel}"
)mpassClassCode"