iRODS
PAM (Interactive)
Topics
● Short intro of SRAM
● https://github.com/HarryKodden/SRAM-iRODS-Showcase
● User flows
Short introduction on SRAM
SURF Research Access Management
Offers access to collaborating researchers working together on specific topics,
using services federatively authenticating using their (trusted-) home institute
Identity Providers
Big advantages:
● No additional account creation
● When home institute offers MFA, that is used,
● When home institute does not offer MFA, SRAM will offer 2nd factor to make
sure every researcher is properly authenticated before using the services
offered via SRAM.
SRAM - iRODS Showcase
This is a docker cluster, containing following services:
● database (postgres 9.1)
● icat : iRODS Server 4.3.0 on ubuntu 20.04
● icommands: 4.3.0 on ubuntu 20.04
● davrods (latest on irods-runtime & irods-dev 4.3.0)
The show case make use of submodule: https://github.com/HarryKodden/iRODS-
Development-Bootstrapper.git
With this packages all packages can be build on the requested version
User provisioning…
The icommands container is running a cron job that
syncs with the LDAP of SRAM to provision /
deprovision all identities of researchers that are
active members of a certain collaboration.
For each such member:
● a home directory is created /home/jdoe
● when the member has a SSH Public key
registered in SRAM, that public key is added to
the /home/jdoe/.ssh/authorized_keys file
● the user is registered at the irods server.
● in the home directory a subfolder is created
`.irods` and within that directory a file
`irods_environment.json`, containing:
https://github.com/HarryKodden/irods-ldap-sync
{
"irods_host": "icat",
"irods_port": 1247,
"irods_user_name": "jdoe",
"irods_zone_name": "tempZone",
"irods_authentication_scheme": "pam_interactive",
"irods_ssl_ca_certificate_file": "/var/lib/ssl/irods.crt"
}
https://github.com/stefan-wolfsheimer/irods_auth_pam_interactive
User flow…
Researcher starts the connecting to the icommands terminal session
ssh jdoe@icommands
then he starts a connection with iRODS, for example by initiating command `ils’
This will kick in the the pam_interactive authentication scheme…
$ ils
3 demonstration flows…
1. SRAM Token flow - This is a custom SRAM flow
2. (SRAM) OIDC - Authorization Code Flow - This is a OIDC standard flow
3. (SRAM) OIDC - Device Code Flow - This is a OIDC standard flow
Long versus short loop…
The PAM flows asking user to step out and complete a web flow may become
irritating when it kicks in too often. (long loop)
When using the OAUTH refresh token mechanism we can offer a much friendlier
user experience. The Server then asks for token refreshment without asking
additional user input. (short loop)
In order for this to be a safe option depends on the binding of a session secret
(with a certain lifetime) that can be passed from icammands to icat server.
We the secure (ssl-) connection between icommands and icat server we can pass
such a secret. The secret could be locally stored in ~/.irodsA on the icommands
home directory.
iRODS PAM OIDC Authentication flow

iRODS PAM OIDC Authentication flow

  • 1.
  • 2.
    Topics ● Short introof SRAM ● https://github.com/HarryKodden/SRAM-iRODS-Showcase ● User flows
  • 3.
    Short introduction onSRAM SURF Research Access Management Offers access to collaborating researchers working together on specific topics, using services federatively authenticating using their (trusted-) home institute Identity Providers Big advantages: ● No additional account creation ● When home institute offers MFA, that is used, ● When home institute does not offer MFA, SRAM will offer 2nd factor to make sure every researcher is properly authenticated before using the services offered via SRAM.
  • 4.
    SRAM - iRODSShowcase This is a docker cluster, containing following services: ● database (postgres 9.1) ● icat : iRODS Server 4.3.0 on ubuntu 20.04 ● icommands: 4.3.0 on ubuntu 20.04 ● davrods (latest on irods-runtime & irods-dev 4.3.0) The show case make use of submodule: https://github.com/HarryKodden/iRODS- Development-Bootstrapper.git With this packages all packages can be build on the requested version
  • 5.
    User provisioning… The icommandscontainer is running a cron job that syncs with the LDAP of SRAM to provision / deprovision all identities of researchers that are active members of a certain collaboration. For each such member: ● a home directory is created /home/jdoe ● when the member has a SSH Public key registered in SRAM, that public key is added to the /home/jdoe/.ssh/authorized_keys file ● the user is registered at the irods server. ● in the home directory a subfolder is created `.irods` and within that directory a file `irods_environment.json`, containing: https://github.com/HarryKodden/irods-ldap-sync { "irods_host": "icat", "irods_port": 1247, "irods_user_name": "jdoe", "irods_zone_name": "tempZone", "irods_authentication_scheme": "pam_interactive", "irods_ssl_ca_certificate_file": "/var/lib/ssl/irods.crt" } https://github.com/stefan-wolfsheimer/irods_auth_pam_interactive
  • 6.
    User flow… Researcher startsthe connecting to the icommands terminal session ssh jdoe@icommands then he starts a connection with iRODS, for example by initiating command `ils’ This will kick in the the pam_interactive authentication scheme… $ ils
  • 7.
    3 demonstration flows… 1.SRAM Token flow - This is a custom SRAM flow 2. (SRAM) OIDC - Authorization Code Flow - This is a OIDC standard flow 3. (SRAM) OIDC - Device Code Flow - This is a OIDC standard flow
  • 8.
    Long versus shortloop… The PAM flows asking user to step out and complete a web flow may become irritating when it kicks in too often. (long loop) When using the OAUTH refresh token mechanism we can offer a much friendlier user experience. The Server then asks for token refreshment without asking additional user input. (short loop) In order for this to be a safe option depends on the binding of a session secret (with a certain lifetime) that can be passed from icammands to icat server. We the secure (ssl-) connection between icommands and icat server we can pass such a secret. The secret could be locally stored in ~/.irodsA on the icommands home directory.