From 77a8a62a841673bf0a4f763af8467b397b625297 Mon Sep 17 00:00:00 2001 From: Dhaval D <343411+ossdhaval@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:49:03 +0530 Subject: [PATCH] docs: update default authn method document (#8684) Documents in the `configuration guide` section should follow the same logical grouping as in the TUI Signed-off-by: ossdhaval <343411+ossdhaval@users.noreply.github.com> --- .../default-authentication-method-config.md | 133 +++++++++++++----- docs/assets/tui-curr-authn-method.png | Bin 0 -> 32479 bytes 2 files changed, 100 insertions(+), 33 deletions(-) create mode 100644 docs/assets/tui-curr-authn-method.png diff --git a/docs/admin/config-guide/default-authentication-method-config.md b/docs/admin/config-guide/default-authentication-method-config.md index 67b1340c1e8..0e774ca0d48 100644 --- a/docs/admin/config-guide/default-authentication-method-config.md +++ b/docs/admin/config-guide/default-authentication-method-config.md @@ -2,77 +2,144 @@ tags: - administration - configuration - - authentication + - default authentication --- # Default Authentication Method -> Prerequisite: Know how to use the Janssen CLI in [command-line mode](config-tools/jans-cli/README.md) +The Janssen Server allows administrators to set and manage the default +authentication method for the authentication server. +The Janssen Server provides multiple configuration tools to perform these tasks. -Let's get the information of **Default Authentication Method**: +=== "Use Command-line" -``` + Use the command line to perform actions from the terminal. Learn how to + use Jans CLI [here](./config-tools/jans-cli/README.md) or jump straight to + the [Using Command Line](#using-command-line) + +=== "Use Text-based UI" + + Use a fully functional text-based user interface from the terminal. + Learn how to use Jans Text-based UI (TUI) + [here](./config-tools/jans-tui/README.md) or jump straight to the + [Using Text-based UI](#using-text-based-ui) + +=== "Use REST API" + + Use REST API for programmatic access or invoke via tools like CURL or + Postman. Learn how to use Janssen Server Config API + [here](./config-tools/config-api/README.md) or Jump straight to the + [Using Configuration REST API](#using-configuration-rest-api) + +## Using Command Line + +Operations to manage the default authentication method are grouped under the +`DefaultAuthenticationMethod` task. To get information about those operations +use the command below. + +```bash title="Command" /opt/jans/jans-cli/config-cli.py --info DefaultAuthenticationMethod ``` -``` +```text title="Output" Operation ID: get-acrs Description: Gets default authentication method. Operation ID: put-acrs Description: Updates default authentication method. - Schema: /components/schemas/AuthenticationMethod + Schema: AuthenticationMethod -To get sample shema type /opt/jans/jans-cli/config-cli.py --schema , for example /opt/jans/jans-cli/config-cli.py --schema /components/schemas/AuthenticationMethod +To get sample schema type /opt/jans/jans-cli/config-cli.py --schema , for example /opt/jans/jans-cli/config-cli.py --schema /components/schemas/AuthenticationMethod ``` -Table of Contents -================= +### Find Current Authentication Method -* [Default AUthentication Method](#default-authentication-method) - * [Find Current Authentication Method](#find-current-authentication-method) - * [Update Default Authentication Method](#update-default-authentication-method) - -## Find Current Authentication Method - -To get the default authentication method: -``` +To get the current default authentication method use the command below. +```bash title="Command" /opt/jans/jans-cli/config-cli.py --operation-id get-acrs ``` -``` -Getting access token for scope https://jans.io/oauth/config/acrs.readonly +```json title="Sample Output" { "defaultAcr": "simple_password_auth" } ``` -## Update Default Authentication Method +### Update Default Authentication Method -Let's update the _Default Authentication Method_ using janssen CLI command line. To perform the _put-acrs_ operation, we have to use its schema. +Let's update the _Default Authentication Method_ using the janssen CLI command line. +To perform the _put-acrs_ operation, we have to use its schema. To get its schema: +```bash title="Command" +/opt/jans/jans-cli/config-cli.py --schema AuthenticationMethod \ +> /tmp/patch-default-auth.json ``` -/opt/jans/jans-cli/config-cli.py --schema AuthenticationMethod > /tmp/patch-default-auth.json -``` +```json title="Sample Output" +{ + "defaultAcr": "string" +} + ``` + +This command will create a `.json` file with a schema. +It comes with a `string` value. We need to modify this file. +We have seen that our default authentication method is `simple_password_auth`. +We are going to update it with `passport_saml` authentication method. + +```json title="Sample Output" { - "defaultAcr": null + "defaultAcr": "passport_saml" } + ``` -It will create a `.json` file with a schema. It comes with a `null` value. We need to modify this file to update default acr. -we have seen that our Default Authentication Method is `simple_password_auth`. We are going to update it with `passport_saml` authenitcation method. +Now let's trigger the operation using the above file. +```bash title="Command" +/opt/jans/jans-cli/config-cli.py --operation-id put-acrs \ +--data /tmp/patch-default-auth.json ``` -nano /tmp/patch-default-auth.json + +It will show the updated result. + +```json title="Sample Output" +Server Response: +{ + "defaultAcr": "passport_saml" +} + ``` -![update default authentication method](../../assets/image-cl-update-default-auth-03042021.png) +## Using Text-based UI + +In Janssen, You can manage default authentication method using +the [Text-Based UI](./config-tools/jans-tui/README.md) also. + +You can start TUI using the command below: -Now let's do the operation: -```commandline -/opt/jans/jans-cli/config-cli.py --operation-id put-acrs --data /tmp/patch-default-auth.json +```bash title="Command" +sudo /opt/jans/jans-cli/jans_cli_tui.py ``` -It will show the updated result. +### Find Current Authentication Method + +Navigate to `Auth Server` -> `Authn` to open the `Authn` screen as shown +in the image below. This screen lists the available authentication methods +where the default method is marked with `x` under the `Default` column. + +![image](../../assets/tui-curr-authn-method.png) + + +### Update Default Authentication Method + +![image](../../assets/tui-authn-method-detail.png) + +Bring the tab focus to the authentication method that should be the new default +method. Hit `Enter` to open the dialog as shown above. Using the checkbox for +`Default Authen Method` the current method can be made the default +authentication method. + -![updated result](../../assets/image-cl-update-default-auth-result-03042021.png) +## Using Configuration REST API +Janssen Server Configuration REST API exposes relevant endpoints for managing +and configuring the Default Authentication Method. Endpoint details are published +in the [Swagger document](./../reference/openapi.md). \ No newline at end of file diff --git a/docs/assets/tui-curr-authn-method.png b/docs/assets/tui-curr-authn-method.png new file mode 100644 index 0000000000000000000000000000000000000000..80b609ded2b1450aed78f0eb1268876464b16a3a GIT binary patch literal 32479 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
  • wZJT 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

    ? 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