UserActivation MA
Management Agent for ActivationCodes tabellen i VigoBAS-Util databasen.
Type: Sql Server
Versjonsnummer: 1.7.0
Dato: 08.10.2020
Objecttype: person
Beskrivelse
Management agent for ActivationCode tabellen i VigoBAS-Util databasen. Frem til ver 1.7 har aktiveringskoder blitt sendt ut vha provisionskoden til AD-MA. Denne MA'n gjør det mulig å sende aktiveringskode vha attibutt flyt. Se figur øverst på siden :
- Bruker blir opprettet i AD MA
- userPrincipalName fra AD flyter til basUserPrincipalName i MetaVers
- Ny rad i ActivationCodes tabellen blir provisjonert av denne MA'n
- Inngående flyt på denne MA'n setter basActivationCode i MetaVers og trigger webservicen som sender aktiveringskode til brukeren.
Parametre
- Server : navn på server hvor VigoBAS-Util ligger
- Database : VigoBAS-Util
- Table/view : ActivationCodes
Autentication mode Velg sql eller windows authentication avhengig av hva dere benytter i deres eget sql miljø. Brukeren må ha db_datareader og db_datawriter-roller på VigoBAS-Util databasen.
Flow
Import
CS Object Type | CS Attributes | Mapping Type | MV Object Type | MV Attribute | Advanced Rule |
---|---|---|---|---|---|
person | activationcode | Advanced | person | activationcode | UserActivationMA_Activationcode |
Export
Det exporters ingen data fra Metaverse fra ActivationCodestabellen utover det som skjer i provisioning koden.
Flow rules
UserActivationMA_Activationcode
#UserActivationMA_Activationcode
#vigobas.util.activationcodes.activationcode -> MV
# -*- coding: utf-8 -*-
from System.Net import WebRequest
from System.Net import CredentialCache
import sys
import string
domain = 'vigobas.local'
sourceActCodeAttribute = 'activationcode'
targetActCodeAttribute = 'basActivationCode'
usernameAttribute = 'basUserPrincipalName'
activationcode = source[sourceActCodeAttribute].Value
if target[usernameAttribute].IsPresent:
username = target[usernameAttribute].Value
#Will only send activationcode if basActivationcode is empty or different
if not target[targetActCodeAttribute].IsPresent or target[targetActCodeAttribute].Value != activationcode:
if target['basHomeMobile'].IsPresent or target['basWorkMobile'].IsPresent:
SendCodeMethod ='http://vigobas-services.' + domain + '/Users/ActivationCodes.svc/SendActivationCodeForUserBySMS'
querystring = '?username=' + username +'&activationcode=' + activationcode
request = WebRequest.Create(SendCodeMethod + querystring)
request.Credentials= CredentialCache.DefaultNetworkCredentials
response = request.GetResponse()
elif target['basHomeEmail'].IsPresent:
mail = target['basHomeEmail'].Value
SendEmailMethod ='http://vigobas-services.' + domain + '/Users/ActivationCodes.svc/SendActivationCodeForUserByEmail'
querystring = '?username=' + username +'&activationcode=' + activationcode + '&emailAddress=' + '&bodyIsHtml=' + "0"
request = WebRequest.Create(SendEmailMethod + querystring)
request.Credentials= CredentialCache.DefaultNetworkCredentials
response = request.GetResponse()
target[targetActCodeAttribute].Value = source[sourceActCodeAttribute].Value
Provisioning rule
import datetime
from datetime import datetime
# Use datelimit to restrict old users from having new activationcode
datelimit = datetime(2020,8,1)
basCreateDateTime = entry['basCreateDateTime'].Value
createdate = datetime.strptime(basCreateDateTime.replace('-','')[:8],'%Y%m%d')
#
if createdate >= datelimit and entry['basUserPrincipalName'].IsPresent:
return True
else:
return False
Initial Flow rule
# -*- coding: utf-8 -*-
from System.Text import Encoding
from System import Guid
import datetime
from datetime import datetime
import sys
import random
import string
def randomString():
# alternatives for generating random sting for activationcode
#tmpString = random.choice(string.ascii_lowercase)
#tmpString += random.choice(string.ascii_uppercase)
#tmpString += random.choice(string.digits)
#tmpString += random.choice(string.punctuation)
tmpString=''
randomSource = string.digits
for i in range(7):
tmpString += random.choice(randomSource)
tmpStringList = list(tmpString)
random.SystemRandom().shuffle(tmpStringList)
finalString = ''.join(tmpStringList)
return finalString
DAYS_VALID = 15
# generate guid to start with "AAAAAAA0" in order to separate from activationcodes
# used by startportal
newId = str(Guid.NewGuid()).upper()
newId = newId[-28:]
newId = '{AAAAAAA0' + newId + '}'
target['ID'].Value = newId
target['type'].Value = 'Start'
target['Username'].Value = source['basUserPrincipalname'].Value
date = datetime.today()
target['createdtimestamp'].Value = date.strftime('%Y-%m-%d %H:%M:%S')
expirydate = date + timedelta(days=DAYS_VALID)
target['expires'].Value = expirydate.strftime('%Y-%m-%d %H:%M:%S')
target['invalidated'].BooleanValue = False
target['used'].BooleanValue = False
activationcode = randomString()
target['activationcode'].Value = activationcode
Annet
MV attributter
UserActivation MA'n krever følgende nye MetaVers attributter:
- basActivationCode
- basWorkMobile
- basHomeMobile
- basHomeEmail
- basUserPrincipalName
Disse attibuttene er implementert i 1.7 skjema til MetaVers.
webservice
For selve utsendingen av aktiveringskoden er det laget to nye webservicer:
- /Users/ActivationCodes.svc/SendActivationCodeForUserBySMS
- /Users/ActivationCodes.svc/SendActivationCodeForUserEmail
Disse er med i ver 1.7 av VigoBAS-Services
web.config for users webservice
Disse elemementene må være med i web.config for users servicen:
<add key="SMSSenderName" value=" VIGO-BAS fylkeskommune" />
<add key="StartEmailTitleEmployee" value="Brukeraktivering Viken fylkeskommune"/>
<add key="StartEmailMessageEmployee" value ="{0}Velkommen som bruker i VIGO-fylkeskommune.{0}{0}Nytt brukernavn: {1}{0}Aktiveringskode: {2}{0}{0}Følg denne lenken for veiledning til hvordan du aktiverer din bruker:{0}{0}https://vigobas.no/for-ansatte/start"/>
<add key="StartEmailTitleStudent" value="Brukeraktivering VIGO-BAS fylkeskommune"/>
<add key="StartEmailMessageStudent" value ="{0}Velkommen som bruker i VIGO-BAS fylkeskommune.{0}{0}Nytt brukernavn: {1}{0}Aktiveringskode: {2}{0}{0}Følg denne lenken for veiledning til hvordan du aktiverer din bruker:{0}{0}https://vigobas.no/for-elev/start "/>
<add key="OrganizationName" value="VigoBAS fylkeskommune"/>
<add key="EmailSenderAddress" value="noreply@vigobas.no"/>
<add key="EmailSenderSystem" value=" VIGOBAS"/>