Skip to content

docs: extend UAE PASS social sign-in provider documentation#2456

Closed
suquant wants to merge 5 commits intoory:masterfrom
GByteTech:docs/uaepass-extend-provider-documentation
Closed

docs: extend UAE PASS social sign-in provider documentation#2456
suquant wants to merge 5 commits intoory:masterfrom
GByteTech:docs/uaepass-extend-provider-documentation

Conversation

@suquant
Copy link

@suquant suquant commented Feb 23, 2026

Add comprehensive reference sections for the UAE PASS provider:

  • Configuration fields reference table
  • Available claims (standard + rawClaims) with SOP-level availability
  • User account types (SOP1/SOP2/SOP3) with verification methods
  • Visitor account details and profileType distinction
  • Build and deploy instructions for custom Kratos fork
  • Staging testing guide with links to UAE PASS docs
  • UAE PASS-specific troubleshooting (missing attributes, logout redirects)
  • Logout endpoint added to endpoints table

Related Issue or Design Document

Checklist

  • I have read the contributing guidelines and signed the CLA.
  • I have referenced an issue containing the design document if my change introduces a new feature.
  • I have read the security policy.
  • I confirm that this pull request does not address a security vulnerability.
    If this pull request addresses a security vulnerability,
    I confirm that I got approval (please contact security@ory.com) from the maintainers to push the changes.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have added the necessary documentation within the code base (if appropriate).

Credits

@CLAassistant
Copy link

CLAassistant commented Feb 23, 2026

CLA assistant check
All committers have signed the CLA.

@suquant suquant marked this pull request as draft February 23, 2026 15:52
Add comprehensive reference sections for the UAE PASS provider:
- Configuration fields reference table
- Available claims (standard + rawClaims) with SOP-level availability
- User account types (SOP1/SOP2/SOP3) with verification methods
- Visitor account details and profileType distinction
- Build and deploy instructions for custom Kratos fork
- Staging testing guide with links to UAE PASS docs
- UAE PASS-specific troubleshooting (missing attributes, logout redirects)
- Logout endpoint added to endpoints table
@suquant suquant force-pushed the docs/uaepass-extend-provider-documentation branch from 4570a2a to b3bd53f Compare February 24, 2026 08:10
@suquant suquant marked this pull request as ready for review February 24, 2026 15:40
Copy link
Member

@vinckr vinckr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@pi1814 would you mind also taking a look, I think you worked most with this provider?

@pi1814
Copy link
Contributor

pi1814 commented Mar 13, 2026

We already have UAEPass docs here — any additions or extensions should go into the existing file rather than creating a new .mdx file.

suquant added 2 commits March 13, 2026 14:43
Consolidate 100_uaepass.mdx into 84_uaepass.mdx, combining Ory Console
setup instructions with comprehensive CLI/self-hosted guide, rawClaims
documentation, SOP level details, staging testing steps, and credits.
@suquant
Copy link
Author

suquant commented Mar 13, 2026

Hey @pi1814 , totally fair - our PR was actually opened before the existing UAE PASS docs landed (#2470 ), so we didn't have a single file to extend at the time. That's why it ended up as a separate file.

Either way, we've now merged everything into 84_uaepass.mdx and dropped the extra file. Should be clean now - happy to address any other feedback!

[if 'email' in claims then 'email' else null]: claims.email,
name: {
first: claims.given_name,
last: claims.family_name,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last name for the UAEPass provider is mapped under claims.last_name

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, the provider maps LastnameEN to the FamilyName field in the Claims struct (provider_uaepass.go:172), which serializes as family_name (provider.go:60). There is a separate last_name field on the struct (line 61), but the UAE PASS provider doesn't populate it. So claims.family_name is the correct one here.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I didn't get that properly. We actually wrote the provider ourselves and mapped lastnameEN to family_name on purpose, following the standard OIDC claim convention. The original value is still available through claims.raw_claims.lastnameEN if needed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right that family_name follows the OIDC convention — however, the current implementation maps it to last_name instead.

Ref: https://github.com/ory/kratos/blob/c651ecf2ebef1fa6bd43ae57f06c4133b05ce068/selfservice/strategy/oidc/provider_uaepass.go#L177

else if 'phone_number' in claims then claims.phone_number,
name: {
first: titleCase(claims.given_name),
last: titleCase(claims.family_name),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last name for the UAEPass provider is mapped under claims.last_name

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[if 'email' in claims then 'email' else null]: claims.email,
name: {
first: claims.given_name,
last: claims.family_name,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UAEPass provider uses last_name instead of family_name

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

client_id: .... # Replace with your UAE PASS client ID
client_secret: .... # Replace with your UAE PASS client secret
auth_url: https://id.uaepass.ae/idshub/authorize
token_url: https://id.uaepass.ae/idshub/token
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

auth_url and token_url are generally not necessary if issuer_url is present.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since UAE PASS doesn't have .well-known/openid-configuration, there's no OIDC discovery. The issuer_url is only used to derive the userinfo endpoint ({issuer_url}/userinfo). The auth_url and token_url default to staging independently and aren't derived from issuer_url, so for production you do need to set them explicitly. I've added a note to make this clearer.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UAE PASS doesn't support OIDC discovery, but all three endpoints are hardcoded and derived from issuer_url:

  • {issuer_url}/idshub/authorize
  • {issuer_url}/idshub/token
  • {issuer_url}/idshub/userinfo

Ref: UAEPass Endpoints

Just set issuer_url to the correct base URL — auth_url and token_url are ignored:

  • Production: https://id.uaepass.ae (default if omitted)
  • Staging: https://stg-id.uaepass.ae

That's it — no other config needed.

suquant added 2 commits March 13, 2026 18:35
Apply review feedback: use raw_claims (matching the JSON struct tag in
provider.go) instead of rawClaims throughout Jsonnet examples, info
blocks, and claims reference tables. Also fix 'an URL' to 'a URL'.
@suquant
Copy link
Author

suquant commented Mar 20, 2026

This documentation is irrelevant cause of ory/kratos#4540

@suquant suquant closed this Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants