Code Monkey home page Code Monkey logo

helloid-conn-prov-target-zenya's Introduction

HelloID-Conn-Prov-Target-Zenya

Repository for HelloID Provisioning Target Connector to Zenya using the SCIM API

Forks Badge Pull Requests Badge Issues Badge GitHub contributors

ℹī¸ Information
This repository contains the connector and configuration code only. The implementer is responsible to acquire the connection details such as username, password, certificate, etc. You might even need to sign a contract or agreement with the supplier before implementing this connector. Please contact the client's application manager to coordinate the connector requirements.

Table of Contents

Requirements

  • SSO configured on Zenya environment
  • Required to run On-Premises since it is not allowed to import a module with the Cloud Agent.
  • A Registered Provider in Zenya. Please see the Zenya Documentation (step 3) for the "How To": Create Provider in Zenya.
    • Service Address
    • Client ID
    • Client Secret
  • Concurrent sessions in HelloID set to a maximum of 2! Exceeding this limit may result in timeout errors, as the Zenya SCIM API supports only a specific number of requests per minute.

Introduction

For this connector we have the option to create and manage Zenya user accounts and groups.

SCIM based API

SCIM stands for System for Cross-domain Identity Management. It is an open standard protocol that simplifies the management of user identities and related information across different systems and domains. For more information, please see: http://www.simplecloud.info

The HelloID connector uses the API endpoints listed in the table below.

Endpoint Description
/scim/users API docs for Get Request: https://identitymanagement.services.iprova.nl/swagger-ui/#!/scim/GetUsersRequest
/scim/groups API docs for Get Request: https://identitymanagement.services.iprova.nl/swagger-ui/#!/scim/GetgroupsRequest

Available actions

The HelloID connector consists of the template scripts shown in the following table.

Action Action(s) Performed Comment
create.ps1 Create (or update) and correlate a user account.
enable.ps1 Enable a user account
update.ps1 Update a user account
disable.ps1 Disable a user account
delete.ps1 Delete a user account Be careful when implementing this! There is no way to restore deleted users.
permissions.ps1 Retrieves all groups and provides them as entitlements
grantPermission.ps1 Add a user account to a group
revokePermission.ps1 Remove a user account from a group
dynamicPermissions.ps1 Add/remove a user account to/from a group
resourceCreation.ps1 Create a group for provided resource, e.g. department

Mapping

The mandatory and recommended field mapping is listed below.

Name Type Create Enable Update Disable Delete Use in Notifications Store in account data Default mapping Mandatory Comment
Active Text X X X No Yes For create: Fixed: False
For enable: Fixed: True
For disable: Fixed: False
Yes
Department Text X X No Yes Field: PrimaryContract.Department.DisplayName No Custom scripting in code to transform this to the corresponding scim object
DisplayName Text X X No Yes Complex: displayName.js Yes
Emails Array X X No Yes Complex: emails.js Yes Custom scripting in code to transform this to the corresponding scim object
ExternalId Text X X No Yes Field: ExternalId Yes
Manager Text X X No Yes None No Set within script, as the aRef of manager is used. Custom scripting in code to transform this to the corresponding scim object
Title Text X X No Yes Field: PrimaryContract.Title.Name No
Username Text X X No Yes Complex: username.js Yes Used for correlation

Correlation

Correlation field Selection Comment
Person Correlation field None No selection, as this isn't used. Only the Account correlation field is used.
Account Correlation field Username ExternalId isn't available to query users on, therefore only username can be used as correlation field.

Getting started

Create Provider in Zenya

Please follow the Zenya Documentation (step 3) to Create a Provider in Zenya

Allowing user and groups created by Zenya to be returned in the SCIM service

By default, ONLY groups and users created by the identity provider or linked to it are returned in the SCIM service. However, there is a setting that Infoland can enable per provider, allowing the users and groups created by Zenya to be returned as well. If users/groups come from multiple sources (ADs, created within Zenya itself), please contact Infoland to ensure that the SCIM service returns everything, not just the users/groups synchronized through this process. For more information, please see (step 7): https://webshare.zenya.work/DocumentResource/709a648d-6300-4e42-a2a6-54ae02201873/Document.pdf?webshareid=y491fqpfwxhoo0kd&showinlinepdf=1

Connection settings

The following settings are required to connect to the API.

Setting Description Mandatory
Service Address The Service Address of the SCIM API Yes
Client ID The OAuth2 Client ID to connect to the SCIM API Yes
Client Secret The OAuth2 Client Secret to connect to the SCIM API Yes
Toggle debug logging When toggled, extra logging is shown. Note that this is only meant for debugging, please switch this off when in production. No

Remarks

  • Infoland must define the current users within the synchronization scope. Failure to do so will result in every person being assigned a new user account.
  • Since we use the SCIM API, we cannot create/set the password of users, so Single Sign-On (SSO) is required to manage the users using the SCIM API.
  • Currently, we can only manage groups we actually created with HelloID. So only the groups we created through HelloID Resource Creation.
    • Note that HelloID can only create groups. The groups will not be deleted by HelloID.
  • Currently, we can only set a department that already exists in Zenya.
    • For this, all departments must have a unique name (we can only match on name, so matching on code or any other field is not possible) within the entire tree (i.e., no duplicate names anywhere).
    • In addition, maintenance of the departments (i.e., creating/deleting as well as setting the owner) will need to take place within Zenya.
  • Currently, we can only set a manager that exists in Zenya and has been created by HelloID. For this, HelloID has to have granted the Account entitlement for the manager first.

Getting help

For more information on how to configure a HelloID PowerShell connector, please refer to our documentation pages

If you need help, feel free to ask questions on our forum

HelloID docs

The official HelloID documentation can be found at: https://docs.helloid.com/

helloid-conn-prov-target-zenya's People

Contributors

ajh3 avatar evanderiet avatar maikel-b avatar michiel85 avatar mspreeuwenberg avatar rick-jongbloed avatar rnieuweveen avatar rschouten97 avatar wimbronswijk avatar

Watchers

 avatar  avatar

helloid-conn-prov-target-zenya's Issues

E-mail is always being updated

_When implementing the connector with updating the e-mail field in the mapping enabled the email address is updated every update. The compare doesn't seem to work. The output of the changed items is as follows:

==========================================================================
[
{
"MemberType": 8,
"IsSettable": true,
"IsGettable": true,
"Value": [
"work:[email protected]"
],
"TypeNameOfValue": "System.Object[]",
"Name": "emails",
"IsInstance": true,
"SideIndicator": "=>"
},
{
"MemberType": 8,
"IsSettable": true,
"IsGettable": true,
"Value": [
"work:[email protected]"
],
"TypeNameOfValue": "System.Collections.ArrayList",
"Name": "emails",
"IsInstance": true,
"SideIndicator": "<="
}
].

Unfortunately after modifying the output of the $currentaccount object from TypeNameOfValue": "System.Object[]", to "TypeNameOfValue": "System.Collections.ArrayList", the result is the same.

It looks like something is going wrong when comparing the two arraylist within a compare-object.

Below a anonymized json of the output of a currenctaccountobject for testing.

{
"id": "46c94ca6-9c6b-491d-81b4-a24d0f8afc3e",
"externalId": "123456",
"userName": "123456",
"displayName": "Donald Duck",
"title": "Worlds best dancer",
"preferredLanguage": "nl-NL",
"active": true,
"emails": [
{
"value": "[email protected]",
"type": "work",
"primary": true
}
],
"phoneNumbers": [
{
"value": "06123456789",
"type": "work",
"primary": true
}
],
"groups": [
{
"value": "1234561-af4f-4787-22d4-bffb5678fbe3",
"display": "HelloID_Magic_Group",
"type": "direct",
"$ref": "https://identitymanagement.services.zenya.work/scim/groups/123456789-af4f-4787-81d4-bffb59a1fbe3"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"meta": {
"resourceType": "User",
"created": "2018-09-28T09:57:15Z",
"lastModified": "2024-02-06T07:39:23Z",
"location": "https://identitymanagement.services.zenya.work/scim/users/12345678-abcd-efgh-1234-a8971381fd3e"
}
}_

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤ī¸ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.