feat: support for organization discovery strategies

Open
#124 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
express, typescript

Research direction

Start by locating the organizationHandle configuration and signInOptions handling in the @asgardeo/express and @asgardeo/javascript packages. Review how each proposed URL strategy should extract a handle or ID and how the discovered value should enter authentication requests. Done means the strategies work across the listed URL patterns in both related packages.

Written by the indexing model from the issue text.

Description

Problem

Currently, Asgardeo SDK users need to manually specify the organizationHandle in their configuration when implementing B2B authentication flows. This creates several challenges:

  1. Manual Configuration: Developers must hardcode organization handles or implement custom logic to extract them from URLs
  2. Limited URL Support: No built-in support for common B2B URL patterns like:
    • Path-based: /o/{orgHandle} or /o/{orgId}
    • Query-based: /?o={orgHandle} or /?o={orgId}
    • Subdomain-based: {orgHandle}.example.com
  3. Repetitive Implementation: Each application needs to implement similar organization extraction logic
  4. Error-Prone: Manual extraction is susceptible to bugs and inconsistencies across applications
Proposed Solution

Implement automatic Organization Discovery Strategies that can extract organization handles from URLs and automatically inject them into authentication requests as signInOptions={{ fidp: 'OrganizationSSO', orgId: '<discovered_org>' }}.

URL Path Strategy (urlPath):

  • Extracts from patterns: /o/{handle}, /o/{id}
  • Example: https://app.com/o/acme-corpacme-corp

URL Query Strategy (urlQuery):

  • Extracts from query parameters: ?o={handle}, ?org={handle}
  • Example: https://app.com/?o=acme-corpacme-corp

Subdomain Strategy (subdomain):

  • Extracts from subdomain patterns: {handle}.domain.com
  • Example: https://acme-corp.app.comacme-corp

Base URL Strategy (baseUrl):

  • Extracts from the configured baseUrl pattern
  • Example: baseUrl: "https://api.asgardeo.io/t/acme-corp"acme-corp
Alternatives

No response

Please select the package issue is related to

@asgardeo/express, @asgardeo/javascript

Version

0.1.12

Reporter Checklist
  • I have searched the existing issues and this is not a duplicate.
  • I have provided all the necessary information.
  • I have verified the feature on the latest version of the package.
Dominant language
TypeScript
Stars
18
Forks
67
Avg merge
4h 6m
Merged PRs (30d)
13

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from asgardeo/javascript

All issues in asgardeo/javascript

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.