Dear iRODS Consortium Team,
I am writing to inquire about PAM authentication implementation across different iRODS client interfaces in relation to our current project requirements.
We are currently developing a web-based data management portal for our research institution that needs to provide seamless access to iRODS data repositories. Our environment includes a domain-joined iRODS server configured to authenticate users through PAM integration with Active Directory/LDAP.
At present, we are successfully using the Python-iRODS Client with PAM authentication in our backend development. However, we have encountered a limitation when attempting to implement a solution using the HTTP REST API client: it appears to lack PAM authentication capability, whereas this functionality is available and works well in the Python iRODS Client.
I would greatly appreciate your insights on the following questions:
Thank you for your time and for the excellent work on the iRODS platform. I look forward to your guidance on this matter.
Best regards,
Laura
Hi Terrell,
Thank you for your detailed response and the helpful links.
I’ve attempted to configure OIDC authentication for the HTTP API using Entra ID as our identity provider, and I’d like to share the steps I’ve followed so far.
Application RegistrationI registered two applications in Entra ID:
A Single Page Application (SPA) that acts as the frontend client.
A second application that represents the protected resource, i.e., the HTTP API.
In the HTTP API application (the protected resource), I defined a custom scope called irods_access.
Permission AssignmentIn the SPA application, I added delegated permissions for the irods_access scope exposed by the HTTP API application.
Token RequestThe SPA uses Authorization Code Flow with PKCE to obtain an access token.
The token request includes the following scopes:
The access token is successfully issued and includes the expected claims:
"aud": "api://<http-api-client-id>"
"scp": "irods_access"
This occurs even though the token appears to include a valid aud claim ("aud": api://<http-api-client-id>) and the expected scope (."scp": irods_access)
The HTTP API is configured as a protected resource, and I’m using the plugin libirods_http_api_plugin-user_claim.so (though I’m not sure if that impacts audience validation in this context).
Is the aud claim format (api:// <http-api-client-id>) acceptable to the HTTP API, or does it expect a different value or format?
Could you provide an example of what the correct openid-connect section in the HTTP API configuration should look like for this kind of Entra ID setup and protected resource?
Specifically, in this configuration—where the HTTP API is acting as a protected resource—what should be set for:
client_id
client_secret
redirect_uri
require_aud_member_from_introspection_endpoint
Any guidance on this would be greatly appreciated.
Thanks again for your support.
Best regards,
Laura
Hi Terrell,
I hope you're doing well.
Just following up to ask if there's anything I might be missing in the current OIDC setup with Entra ID. I'm seeing an audience validation error, even though the token seems correctly issued.
Also, from the README I noticed that only the Resource Owner Password Credentials and Authorization Code grants are listed as supported. Is the protected resource functionality considered stable, or does it require any specific configuration to handle audience validation correctly?
Thanks again for your help!
Best regards,
Laura
Hi Terrell,
Thank you for your follow-up. I'm happy to confirm the steps I followed to get the setup working and to share my current configuration.
Azure Entra ID Application Registration
I registered two applications in Azure Entra ID:
SPA Client App: Represents the frontend (UI), using the Authorization Code Flow with PKCE for user authentication.
HTTP API Application: Serves as the protected resource for iRODS.
To allow the SPA to obtain a token with the appropriate aud parameter for the HTTP API, I added the "API access as a user" permission from the SPA client to the HTTP API application.
HTTP API – OpenID Configuration
Here is the openid_connect section of the HTTP API configuration:
"openid_connect": {I hope this configuration is technically correct.
Please let me know if you spot any issues or have further suggestions.
Best regards,
Laura