Gå til innhold

VIGOBAS services

Introduksjon

VIGO-BAS services er et sett med SOAP webservices som primært brukes til å hente data ut og levere data til VIGO-BAS portal, men brukes også for å for eksempel sjekke/generere brukernavn i IDM løsningen.

Løsningen består av syv SOAP webservicer

  • Users
  • Groups
  • Organizations
  • Messages
  • InternetAccessLevel
  • Employments
  • FeideMFA

Servicer

Users

https://vigobas-services.example.com/Users/profiles.svc

Get

http://VigoBAS-Services.example.com/Users/profiles.svc/get?id=ola.normann

{  
   "Address":"Sivert Tobiesens Gate 4",
   "DisplayName":"Ola Normann",
   "FirstName":"Ola",
   "Id":"ola.normann",
   "LastName":"Normann",
   "PostalCode":"9007",
   "PostalLocation":"TROMSØ",
   "PrimaryDepartment":"BRUNLIEN",
   "PrivateEmail":null,
   "PrivateMobile":"416 81 817",
   "PrivatePhone":null,
   "SocialSecurityNumber":"17128255599",
   "UserId":"00000000-0000-0000-0000-000000000000",
   "Username":"ola.normann",
   "WorkEmail":"ola.normann@vigobas.no",
   "WorkMobile":"999 99 999",
   "WorkPhone":"12 34 56 78"
}
GetAll

Returnerer alle brukere ved alle avdelinger

http://VigoBAS-Services.example.com/Users/profiles.svc/getAll

"Returnerer et array av brukere, for eksempel se GetForDepartment"

GetForDepartment

http://VigoBAS-Services.example.com/Users/profiles.svc/getfordepartment?department=brunlien

[  
   {  
      "Address":null,
      "DisplayName":"Leila Sjøberg",
      "FirstName":"Leila",
      "Id":"leilasjøberg",
      "LastName":"Sjøberg",
      "PostalCode":null,
      "PostalLocation":null,
      "PrimaryDepartment":"BRUNLIEN",
      "PrivateEmail":null,
      "PrivateMobile":null,
      "PrivatePhone":null,
      "SocialSecurityNumber":"87003542123",
      "UserId":"00000000-0000-0000-0000-000000000000",
      "Username":"leilasjøberg",
      "WorkEmail":null,
      "WorkMobile":null,
      "WorkPhone":null
   },
   {  
      "Address":null,
      "DisplayName":"Iqra Helgerud",
      "FirstName":"Iqra",
      "Id":"iqrahelgerud",
      "LastName":"Helgerud",
      "PostalCode":null,
      "PostalLocation":null,
      "PrimaryDepartment":"BRUNLIEN",
      "PrivateEmail":null,
      "PrivateMobile":null,
      "PrivatePhone":null,
      "SocialSecurityNumber":"04437631123",
      "UserId":"00000000-0000-0000-0000-000000000000",
      "Username":"iqrahelgerud",
      "WorkEmail":null,
      "WorkMobile":null,
      "WorkPhone":null
   },
]

Employments.svc

http://vigobas-services.buddy.test.lokal/Users/Employments.svc

Get

http://vigobas-services.buddy.test.lokal/Users/Employments.svc/get?username=ola.normann

[
    {
        "DepartmentDisplayname": "IT-senteret",
        "DepartmentId": "123000",
        "EmploymentId": 007,
        "Leader": null,
        "ResourceId": null,
        "WorkPercentage": 90,
        "WorkTitle": null
    },
    {
        "DepartmentDisplayname": "PO - Lønnsteamet",
        "DepartmentId": "114002",
        "EmploymentId": 007,
        "Leader": null,
        "ResourceId": null,
        "WorkPercentage": 10,
        "WorkTitle": null
    }
]

Username.svc

http://VigoBAS-Services.example.com/Users/Username.svc

CheckSSN

Sjekker om et personnumer har et brukernavn assosiert i Username tabellen og evt. returnerer det.

http://VigoBAS-Services.example.com/Users/Username.svc/checkssn?ssn=1234567890

Eksempel på Svar:

{"Username":"ola.normann"}
CheckUsername

Sjekker om et brukernavn er i bruk ,returnerer True eller False.

http://VigoBAS-Services.example.com/Users/Username.svc/checkusername?username=GjNil

Eksempel på Svar:

{"inUse":false}
CheckDNUsername

Sjekker om brukeren tidligere har et brukernavn basert på DN i agenten. For at dette skal virke krever det at man har en flyt-regel som legger DN i agenten inn i feltet basDN. Og videre flyter dette attributtet til AgentID feltet på Users MA

http://VigoBAS-Services.example.com/Users/Username.svc/checkDNUsername?DN=CS-DN-ID-12345

Eksempel på Svar:

{"username": "olanor"}
SearchUsername

Søker etter brukernavn og returnerer alle som har dette brukernavnet. Man kan søke på tre ulike måter

  • start -Søker etter brukernavn som starter på username du har angitt
  • end -Søker etter brukernavn som slutter på username du har angitt
  • any -Søker etter brukernavn som inneholder username du har angitt

http://VigoBAS-Services.example.com/Users/Username.svc/SearchUsername?username=lano&searchparameter=any

Eksempel på Svar:

{
    "username": "olano",
    "username": "olanor",
    "username": "lanor",
    "username": "lano",
    "username": "lanor3"
}
GetCleanUsername

Søker etter brukernavn i username parameteret og returnerer brukernavn fritt for uønsket innhold (gitt at det er en erstatning for ordet i VigoBAS-Util.Badusernames), samt om det brukernavet tjenesten prøver å foreslå er er i bruk, eller ikke. Er det i bruk må man spørre på et annet brukernavn. Algoritmen støtter ikke å faktisk finne ledig og fritt brukernavn, skulle det bli kollisjon på første brukernavforslag

Søker man etter her knular for å se om det er ledig, vil det først prøve å "vaske" dette brukernavnet fra uheldig sammensetning av brukernavnet og videre sjekke dette. Oppdater eventuelt VigoBAS-Util.Badusernames tabellen om man ønsker å ha flere mulige treff og erstatning for disse

http://VigoBAS-Services.example.com/Users/Username.svc/GetCleanUsername?username=knular

Eksempel på Svar:

{
    "username": "kunlar",
    "inuse": "true",
    "badusername" : "false"
}
WriteHistory

Skriver brukernavn til historikk tabellen

http://VigoBAS-Services.example.com/Users/Username.svc/writehistory?username=pablo.escobar&ssn=17128245617

Returnerer status for success eller evt. feil

{"Status":"Success"}
GenerateUsername (Metoder)

Generate Username metodene er litt større kall som tar seg av hele løpet rundt det å generere brukernavn. GenerateUsernameAltX metodene tar seg alt av sjekker ,vasking og skriving til historikktabell(Feide-krav) før den returnerer et ferdig vasket og sjekket brukernavn

  • Sjekker om personnummer allerede har et personnumer knyttet til seg og evt. returnerer det.
  • Sjekker at brukernavnet som blir generert er unikt.
  • Evt. Genererer brukernavn på alternativ algoritme
  • Skriver til Username tabellen for historikk

Fleste nettlesere og rammeverk har automatisk erstatting av ulovlige tegn i URL-en. F.eks mellomrom byttes automatisk med %20. Så paramtetre som f.eks name i eksemplene under kan man sende in "Fornavn Etternavn" helt fint.

GenerateUsernameAlt1

http://VigoBAS-Services.example.com/Users/Username.svc/GetUsernameAlt1?name=Ola%20Normann&ssn=17128244444

{"Username":"ola.normann"}
GenerateUsernameAlt2

http://VigoBAS-Services.example.com/Users/Username.svc/GetUsernameAlt2?name=Ola%20Normann&ssn=17128244444

{"Username":"thola171282"}
GenerateUsernameAlt4

Generer brukernavn "Buddy-style". Metoden lar deg velge antall bokstaver fra fornavn og etternavn og setter så fødselsdato og eventuelt løpenummer til slutt. fName er strengen som kommer først i brukernavnet, lName sist. Så dersom du ønsker etternavndelen først i brukernavnet, settes fName=Etternavn og lName=Fornavn:

http://VigoBAS-Services.example.com/Users/Username.svc/GetUsernameAlt4?fName=Normann&lName=Ola&bDate=1712&ssn=17128244444&gNameCh=2&lNameCh=2

{"Username":"lath1712"}
GenerateUsernameAlt5

Generer brukernavn .

http://VigoBAS-Services.example.com/Users/Username.svc/GetUsernameAlt5?fullName=Ola%20Normann&ssn=17128244444&minNumberOfChars=5&maxNumberOfChars=10&minNumberOflastnameChars=3&useMiddlename=1

{"Username":"olanor"}
GenerateUsernameAlt6

Generer brukernavn prefix + løpenummer. Metoden lar deg sette prefix og start-nummer. Velger neste ledige nr og returnerer prefix og nummer som brukernavn. Ofte omtalt om u-nummer som brukernavn

http://VigoBAS-Services.example.com/Users/Username.svc/GetUsernameAlt?ssn=11223344556&usernameprefix=u&startnumber=100000

{"Username":"u100251"}

Groups

Organizations

http://VigoBAS-Services.example.com/Organizations/Departments.svc

Departments.svc

Create
  • POST
  • Content-Type: application/json
  • http://VigoBAS-Services.example.com/Organizations/Departments.svc?create

Metoden oppretter en Department i tabellen Organizations. Gir ingen returmelding

  • string department
  • string displayname
{
    "department": "123456789",
    "displayname": "HR avdelingen
}
Get

Metoden henter ut info om en spesifikk Department fra Organizations tabellen

http://VigoBAS-Services.example.com/Organizations/Departments.svc?get=123456789

Returnerer: Name, DisplayName, PostalAddress, ParentOrganization

GetAll

http://VigoBAS-Services.example.com/Organizations/Departments.svc?getall

Returnerer alle department

GetOwnedBy

Metoden henter ut organisajonstre til orgenheter over

http://VigoBAS-Services.example.com/Organizations/Departments.svc?getownedby?123456789

Returnerer en liste med overnforliggende departments

GetDepartmentsAdministeredBy

Metoden henter ut Departments som er underlagt et brukernavn

http://VigoBAS-Services.example.com/Organizations/Departments.svc?GetDepartmentsAdministeredBy=olanor

Delete

Metoden fjerner en department fra organizations tabellen

  • Post
  • Content-Type: application/json
  • http://VigoBAS-Services.example.com/Organizations/Departments.svc
{
    "department": "123456789"
}

Messages

https://vigobas-services.example.com/Messages/email.svc

https://vigobas-services.example.com/Messages/sms.svc

https://vigobas-services.example.com/Messages/sms.svc/registersms

{
  "Recipient": "41691917",
  "Message": "Hello World",
  "SenderName": "VigoBAS",
  "SenderSystem": "Postman"
}

InternetAccessLevel

https://vigobas-services.example.com/Internetaccess/internetaccess.svc

SOAP - Gå til svc adressen for å se kall

FeideMFA (Feide multifactor authentication)

FeideMFA består av et sett med webservices som henter og setter data på personer i et AD LDS (LDAP katalog)

De forskjellige webservicene er:

  • GetADUser
  • GetFeideUser
  • GetQRCode
  • SetMFA (Denne utfører alle operasjoner som er nødvendig)
  • GenerateBase32Key
  • GetFeideEncryptedKey
  • GetALevelIDs

GetADUser

Henter data fra AD

attributt in/out type
uid in string
uid out string
Displayname out string
mobilephone out string

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/GetADUser?uid=USERNAME

GetFeideUser

Henter data fra AD LDS

attributt in/out type Kommentar
uid in string
uid out string
Alevel out string Feide tjeneste ID-ene
Amethod out string SMS eller TOTP (Feide refererer ofte TOTP som GA)

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/GetFeideUser?uid=USERNAME

GetQRCode

Viser en QR kode for totp applikasjon

attributt in/out type Kommentar
Uid in string Brukernavnet
SecretKey in string Base32 nøkkel 16-tegn
Issuer in string Bruk (a-zA-Z0-9_) uten opphold
out image/jpeg

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/GetQRCode?uid=username&SecretKey=ZZCJLSBDCWHFXAM7&issuer=VigoBAS

SetMFA

Setter data i AD LDS for både SMS og TOTP (GA) metode samt returnerer uri til QR-bildet

attributt in/out type Kommentar
uid in string
ALevel in string Feide-tjenesteID en eller flere ID-splittet med PIPE-tegn
AMethod in string SMS eller TOTP
Issuer in string Brukernavn på den som aktiverer om to-faktor
qrIssuer in string Teksten i beskrivelsen på QRkoden i retur
IdentificatorType in string Brukernavn til den som aktiverer sterk-autentisering (for logging)
QRCodeuri out uri streng til QR-bilde
Secret out string Base32 nøkkel
UpdateResult out boolean True/False om oppdatering gikk OK eller ikke

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/SetMFA?uid=username&alevel=12345|23456&AMethod=(TOTP or SMS)&issuer=AdminBruker&qrIssuer=FEIDE&IdentificatorType=BankKort

GenerateBase32Key

attributt in/out type kommentar
length in integer Feide krever 16 tegn
Base32EncryptedKey out string

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/GenerateBase32Key?length=16

GetFeideEncryptedKey

Denne må defineres i AD LDS for sterk autentisering i iht dokumentasjon fra Feide

attributt in/out type Kommentar
SecretKey in string Benytt base32 string fra GenerateBase32Key
FeideEncryptedKey out string

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/GetFeideEncrypted?secretkey=ZZCJLSBDCWHFXAM7

GetALevelIDs

attributt in/out type kommentar
Name out string Navnet på Feidetjenesten
ID out string ID på feidetjenesten
Default out bollean Om den skal være default valgt i dropdown meny

AlevelIDs":[{"Default":true,"ID":"26217","Name":"IT's Learning"}]

Eksempel http://vigobasservices.example.com/FeideMFA/FeideMFA.svc/GetALevelIDs