Skip to main content

Azure AD User Provisioning and SSO

user provisioning is a direct web service using REST APIs connecting to the sys_user table (and optionally sys_user_group)

https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/servicenow-provisioning-tutorial

https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/how-provisioning-works

https://www.youtube.com/watch?v=oUIq3Ue1djE

https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0655991

Microsoft Azure provisioning is not a ServiceNow product. Please contact Microsoft for specific questions.

The typical Azure user provisioning flow is as follows:

  1. Azure AD sync service looks up assigned users in scope for provisioning in Azure AD.
  2. If new users have been assigned or otherwise added to the scope since the last sync, Azure AD sync service queries ServiceNow to see if those users exist.
  3. If user does not exist in ServiceNow, a new user is created in sys_user table.
  4. If user does exist, then it is updated with any user attributes found to be out of sync.
  5. After the steps above have completed, the Azure AD sync service queries for any ServiceNow reference attributes specified in the Azure AD sync attribute mappings.
  6. The Azure AD sync service then updates the user record with the reference attribute values.
     
    If location is configured as one of the target attributes to sync to in the attribute mappings, the sync service should be updating that field.
     
    The provisioning service does resolve references between a sys_user record and other ServiceNow tables, but it does not create records in  other tables like cmn_location. 

SSO:

https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/servicenow-tutorial

Comments

Popular posts from this blog

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }

URL link in addInfoMessage

var ga=new GlideAjax('gld_HR_ajax'); ga.addParam('sysparm_name', 'checkEmployeeNumber_hrProfile'); ga.addParam('sysparm_hrprofilenumber', g_form.getValue('number')); ga.addParam('sysparm_employeenumber', newValue); ga.getXMLAnswer(function(answer) { if (answer!='undefined' && answer!=''){ var navURL="<a style='text-decoration:underline;color:blue' href=hr_profile.do?sysparm_query=number=" + answer + ">" + answer + "</a><img width='3' src='images/s.gif'/>"; var sMsg='The employee number entered already exists on another HR Profile ' + navURL; //alert(sMsg); g_form.showErrorBox('employee_number', 'error - please check'); g_form.addInfoMessage(sMsg); } });