diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 45078672..8eaa8e90 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -1,19 +1,25 @@ --- -name: make-doc +name: Update Documentation # Triggers the workflow on push or pull request events on: + workflow_dispatch: push: branches: [main] + pull_request: + branches: [main] jobs: - test-redoc: + documentation: runs-on: ubuntu-latest name: Test documentation and generate openapi html documentation + permissions: + contents: write steps: - name: Checkout uses: actions/checkout@v3 - + with: + ref: ${{ github.head_ref }} - name: lint markdown files uses: nosborn/github-action-markdown-cli@v2.0.0 with: @@ -55,14 +61,41 @@ jobs: ls -al docs/api/ test -f docs/api/index.html || (echo "Missing docs/api/index.html from previous step." && exit 1) - - name: Commit files if the html has changed + - name: Commit files if the OpenAPI html has changed run: | git config user.name github-actions git config user.email github-actions@github.com - git pull git add docs/api/index.html git diff-index --quiet HEAD || git commit -m "Update github page" + - uses: dorny/paths-filter@v2 + id: changes + with: + filters: | + archi: + - 'docs/invite.archimate' + - name: Download Archi + run: | + curl "https://www.archimatetool.com/downloads/archi5.php?/5.1.0/Archi-Linux64-5.1.0.tgz" \ + -q -o /tmp/archi.tgz + tar -zxvf /tmp/archi.tgz + if: steps.changes.outputs.archi == 'true' + - name: Generate HTML report from Archimate model + run: | + /tmp/Archi/Archi -application com.archimatetool.commandline.app \ + -nosplash --consoleLog --loadModel ./docs/invite.archimate \ + --html.createReport "./docs/Archi/" + if: steps.changes.outputs.archi == 'true' + + - name: Commit files if the Archimate html has changed + run: | + git config user.name github-actions + git config user.email github-actions@github.com + git pull + git add docs/Archi/* + git diff-index --quiet HEAD || git commit -m "Update HTML export of Archimate file" + if: steps.changes.outputs.archi == 'true' + - name: Push changes uses: ad-m/github-push-action@master with: diff --git a/.gitignore b/.gitignore index 162c2681..9b063b0a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ node_modules/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ !**/src/test/**/target/ +docs/invite.archimate.bak ### STS ### .apt_generated @@ -37,4 +38,4 @@ dep.tree provisioning.local.json IgnoreMeTest.java dependency.tree -NOTES.txt \ No newline at end of file +NOTES.txt diff --git a/docs/invite.archimate b/docs/invite.archimate new file mode 100644 index 00000000..edb637c5 --- /dev/null +++ b/docs/invite.archimate @@ -0,0 +1,267 @@ + + + + + + Een rolbeheerder kan rollen aanmaken binnen een applicatie van een instelling. De rolbeheerder is typisch een functioneel beheerder van de applicatie. + + + Gasten zijn gebruikers die toegang nodig hebben tot de systemen van een instelling, maar geen werk- of studeerrelatie hebben met deze instelling. Voorbeelden van gasten kunnen zijn: +- Gastdocenten +- Proefstudenten +- Externe onderzoekers + + + Een uitnodiger mag gasten uitnodigen voor 1 of meer rollen. DIt is typisch een docent of administratief medewerker van een instelling. + + + Rollen worden beheerd door de rolbeheerder + + + + + + + + + + + Single-Source-of-truth +Centrale logica +Centrale opslag + + + + De website invite.surfconext.nl, waar beheerders, SURFConextVerantwoordelijken en Uitnodigers hun taken uitvoeren + + + + The Policy Decision Point or PDP can be used to determine if certain users, groups or teams can or cannot access a service. Without a Policy Decision any user of an institution will be granted to access a service. Only the service provider is able to deny access of certain groups or users, through e.g. provisioning or a VOOT-connection. The basics of PDP or 'Authorisatie regels' can be found here (Dutch). + +There are two types of rules: + +Authorization rules. These result in a "permit" or "deny" access verdict for the user in question. If the user is denied, SURFconext will show an error page with a specific message and not allow the user to proceed to the SP. +Stepup rules. These can add a Level of Assurance requirement to a login. If the policy matches, the user is required to perform a second factor authentication via SURFsecureID before they can proceed to the service. +Both policy types can be combined for an SP without issue. + + + + Applicatiecomponent van SURFconect om extra attributen in een authenticateflow te injecteren, of vestaande attributen te bewerken. + + + Na authenticatie kan binnen de login-flow worden besloten of een gebruiker toegang mag krijgen tot een applicatie, bijvoorbeeld op basis van attributen zoals entitlements. + + + Het geheel van alle componenten die samen EduID vormen + + + + + Een applicatie waar de gast toegang moet krijgen. Applicaties die zijn gekoppeld aan provisioning-systemen, en om kunnen gaan met gast-gebruikers kunnen direct vie het IDM van de instelling een nieuwe gebruiker aangeleverd krijgen met de juiste rechten, zodat de gebruiker direcht na het accepteren van de uitnodiging in kan loggen. + + + Een instelling kan een eigen portaal maken voor het uitnodigen en beheren van gasten, of de functies integreren in een eigen (IdM)tool. + + + De website voor gasten. Hier kunnen uitnodigingen geaccepteerd worden, en ziet de gastgebruiker een overzicht van zijn rollen. + + + + + + + + + + + + + + + + + + + + + + + https://wiki.surfnet.nl/display/surfconextdev/VOOT+description + + + + + + + + + + + + + + + + + + + + + + Na het accepteren van een uitnodiging kan een json bericht worden gestuurd aan een webhook. Bij een instelling kan op basis van deze trigger een gebruiker worden aangemaakt in lokale systemen, en rechten worden toegekend aan deze gebruiker. +SCIM is an emerging open standard that defines a comprehensive REST API, along with a platform neutral schema and a SAML binding to facilitate the user management operations across SaaS applications; placing specific emphasis on simplicity and interoperability. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hier staan de componenten die SURF beheert of realiseert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +