Date: Fri, 29 Mar 2024 13:17:03 +0000 (GMT) Message-ID: <2146312835.3404.1711718223826@a2be6a7a0dbc> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_3403_337785695.1711718223825" ------=_Part_3403_337785695.1711718223825 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Skatteverket publicerar en skrift SKV 704 (up= plaga 8 =C3=A4r senaste i skrivande stund) som beskriver hur personnummret = =C3=A4r uppbyggt. I avsnittet "Personnummer i ADB-system" st=C3=A5r f=C3=B6= ljande:
Personnummer i ADB-system
Inom Skatteverkets ADB-system f=C3=B6r folkbokf=C3=B6ring
lagras personnumret med tolv siffror, d=C3=A4r de tv=C3=A5 in-
ledande siffrorna anger under vilket =C3=A5rhundrade en
person =C3=A4r f=C3=B6dd. Siffran f=C3=B6r =C3=A5rhundrade kan vara 18, 19<= br> eller =E2=80=93 efter millennieskiftet =E2=80=93 20.Siffran visas normalt inte p=C3=A5 terminalbilder eller
utskrifter men ing=C3=A5r i aviseringen av folkbokf=C3=B6rings-
uppgifter till andra myndigheter via Navet, Skatte-
verkets system f=C3=B6r distribution av folkbokf=C3=B6ringsupp-
gifter till samh=C3=A4llet.
SWAMID rekommenderar att man f=C3=B6ljer denna princip f=C3=B6r personnu= mmer som skickas via attributet norEduPersonNIN, d.v.s. att personnummer re= presenteras som 12 tecken utan bindestreck eller mellanslag. F=C3=B6r Shibb= oleth IdP finns norEduPersonNIN definerat p=C3=A5 sidan Example of a standard attribute resolver for Shibboleth IdP v4 and a= bove.
Skatteverket publicerar en skrift SKV 707 (upplaga 2 =C3=A4r senaste i sk= rivande stund) som beskriver vad samordningsnummer =C3=A4r. I inledningen d= efinieras skillnanden mellan samordningsnummer och personnummer enligt:
Samordningsnummer =C3=A4r en enhetlig identitetsbeteckning
f=C3=B6r fysiska personer som inte =C3=A4r eller har
varit folkbokf=C3=B6rda i Sverige. Skattekontoret kan tilldela
samordningsnummer p=C3=A5 beg=C3=A4ran av en myndighet.Motsvarande identitetsbeteckning f=C3=B6r den som =C3=A4r
eller har varit folkbokf=C3=B6rd kallas personnummer.
Mer information om personnummer l=C3=A4mnas i Skatteverkets
informationsblad =E2=80=9DPersonnummer=E2=80=9D (SKV 704).
Universitet och h=C3=B6gskolor f=C3=A5r inte beg=C3=A4ra samordningsnumm= er fr=C3=A5n Skatteverket men om en person har ett samordningsnummer ska vi= anv=C3=A4nda det. Det som s=C3=A4rskiljer ett samordningsnummer fr=C3=A5n = ett vanligt personnummer =C3=A4r att siffran f=C3=B6r f=C3=B6delsedag =C3= =B6kas med talet 60, dvs. den som =C3=A4r f=C3=B6dd den tredje i m=C3=A5nad= en har 63 ist=C3=A4llet f=C3=B6r 03.
Ett interimspersonnummer i Ladok =C3=A4r konstruerat som =C3=85=C3=85=C3= =85=C3=85MMDDXnnn, d.v.s. med en versal bokstav i den 9:e positionen samt e= n k=C3=B6nsvariabel i den 11:e positionen. Bokstaven behandlas som en etta = vid utr=C3=A4kning av kontrollsiffran i position 12. Traditionellt har s.k.= P-nummer anv=C3=A4nds lokalt i Ladok men efter inf=C3=B6randet av UHR:s an= tagningssystem har s.k. T-nummer anv=C3=A4nds nationellt.
N=C3=A4r samtliga tillg=C3=A4ngliga interimspersonnummer har tagit slut = f=C3=B6r en bokstav forts=C3=A4tter man med n=C3=A4sta i nedanst=C3=A5= ende ordning:
Efter =E2=80=99T=E2=80=99 ska =E2=80=99R=E2=80=99 anv=C3=A4ndas till des= s samtliga tillg=C3=A4ngliga interimspersonnummer med den bokstaven =C3=A4r= slut f=C3=B6r det aktuella datumet. D=C3=A4refter anv=C3=A4nds =E2=80=99S= =E2=80=99, osv.
Konfigurationerna under detta avsnitt fungerar endast f=C3=B6r Shibbolet= h 3.4 eller senare. F=C3=B6r simpleSAMLphp och ADFS kan konfigurationsexemp= len endast anv=C3=A4ndas som inspiration.
F=C3=B6ruts=C3=A4ttning:
Personnummer h=C3=A4mtas via attributet mittPersonnummer fr= =C3=A5n k=C3=A4llan myLDAP.
<= ;AttributeDefinition xsi:type=3D"Simple" id=3D"norEduPersonNIN"> <InputDataConnector ref=3D"myLDAP" attributeNames=3D"mittPersonn= ummer"/> <AttributeEncoder xsi:type=3D"SAML1String" name=3D"urn:mace:dir:= attribute-def:norEduPersonNIN" encodeType=3D"false" /> <AttributeEncoder xsi:type=3D"SAML2String" name=3D"urn:oid:1.3.6= .1.4.1.2428.90.1.5" friendlyName=3D"norEduPersonNIN" encodeType=3D"false" /= > </AttributeDefinition>
F=C3=B6ruts=C3=A4ttningar:
<Att= ributeDefinition xsi:type=3D"ScriptedAttribute" id=3D"norEduPersonNIN"> <InputDataConnector ref=3D"myLDAP" attributeNames=3D"employeeNum= ber" /> <Script> <![CDATA[ // Script to handle 10 position wide national identity numbers // Create 12 position wide norEduPersonNIN from the attribute emplo= yeeNumber // Change employeeNumber to your NIN attribute name try { =20 // Get a ref to the NIN received from ldap // Change employeeNumber to your NIN attribute name nin=3DemployeeNumber.getValues().get(0); // Only do decoration of NINs which are on the form= at YYMMDDxxxx if(nin.length() =3D=3D 10) { // Create the two alternative return string= s we have to choose between=20 pnr19 =3D "19" + nin; pnr20 =3D "20" + nin; // Extract year/month/day from the NIN stri= ng m_y =3D nin.substring(0,2); m_m =3D nin.substring(2,4); m_d =3D nin.substring(4,6); // Create a Date object for the 20xx case datePnr =3D new Date("20" + m_y, m_m-1, m_d= ); // Create a Date object for the current dat= e dateCur =3D new Date();=20 // Verify the value of datePnr before proce= eding if(isNaN(datePnr.valueOf())) { throw("Failed to parse the NIN into= a Date object"); } =20 // If the 20xx case is in the future we ass= ume 19xx for the NIN attribute if(datePnr>dateCur) { norEduPersonNIN.getValues().add(pnr= 19); } else { norEduPersonNIN.getValues().add(pnr= 20); } =20 } else if(nin.length() =3D=3D 12) { norEduPersonNIN.getValues().add(nin); } else { throw("Not setting any norEduPersonNIN sinc= e it is bogus (length=3D" + nin.length() + "): " + nin);=20 } =20 } =20 catch(err) { throw("Not setting any norEduPersonNIN due to excep= tion: " + err);=20 } =20 ]]> =20 </Script> </AttributeDefinition>
F=C3=B6ruts=C3=A4ttningar:
<= !-- Swedish eID Framework, personalIdentityNumber. Release norEduPersonNIN = if it only contains numbers (filter out interim numbers) --> <!-- Uncomment InputAttributeDefinition if norEduPersonNIN is genera= ted by a script or InputDataConnector if it is an attribute in LDAP --> <AttributeDefinition xsi:type=3D"RegexSplit" id=3D"personalIdentityN= umber" regex=3D"^((18|19|20)?[0-9]{2}((0[0-9])|(10|11|12))((([0-2][0-9])|(3= [0-1]))|((6[1-9])|([7-8][0-9])|(9[0-1])))[0-9]{4})$"> <!-- <InputAttributeDefinition ref=3D"norEduPersonNIN"/> -= -> <!-- <InputDataConnector ref=3D"myLDAP" attributeNames=3D"nor= EduPersonNIN" /> --> <AttributeEncoder xsi:type=3D"SAML1String" name=3D"urn:mace:dir:= attribute-def:personalIdentityNumber" encodeType=3D"false" /> <AttributeEncoder xsi:type=3D"SAML2String" name=3D"urn:oid:1.2.7= 52.29.4.13" friendlyName=3D"personalIdentityNumber" encodeType=3D"false" /&= gt; </AttributeDefinition>
F=C3=B6ruts=C3=A4ttningar:
<= !-- Schema: SCHema for ACademia (SCHAC) --> <!-- This takes the norEduPersonNIN and returns the date of birth pa= rt. --> <!-- Uncomment InputAttributeDefinition if norEduPersonNIN is genera= ted by a script or InputDataConnector if it is an attribute in LDAP --> <AttributeDefinition xsi:type=3D"RegexSplit" id=3D"schacDateOfBirth"= regex=3D"^((18|19|20)?[0-9]{2}((0[0-9])|(10|11|12))((([0-2][0-9])|(3[0-1])= )|((6[1-9])|([7-8][0-9])|(9[0-1])))).*$"> <!-- <InputAttributeDefinition ref=3D"norEduPersonNIN"/> -= -> <!-- <InputDataConnector ref=3D"myLDAP" attributeNames=3D"nor= EduPersonNIN" /> --> <AttributeEncoder xsi:type=3D"SAML1String" name=3D"urn:mace:dir:= attribute-def:schacDateOfBirth" encodeType=3D"false" /> <AttributeEncoder xsi:type=3D"SAML2String" name=3D"urn:oid:1.3.6= .1.4.1.25178.1.2.3" friendlyName=3D"schacDateOfBirth" encodeType=3D"false" = /> </AttributeDefinition>