Skip to content

Add full support for OIDC prompt=create #50

Description

@axies20

Description

Open.IdentityServer 1.0.2 defines the standard prompt value:

OidcConstants.PromptModes.Create

However, Constants.SupportedPromptModes does not include it. The collection currently contains only none, login, consent, and select_account.

As a result, an authorization request containing:

prompt=create

is treated as unsupported by AuthorizeRequestValidator and silently ignored. The value is not copied to ValidatedAuthorizeRequest.PromptModes / AuthorizationRequest.PromptModes.

prompt=create is standardized by Initiating User Registration via OpenID Connect and is also exposed by Microsoft.IdentityModel as OpenIdConnectPrompt.Create.

Expected behavior

Open.IdentityServer should provide complete support for prompt=create:

  • include OidcConstants.PromptModes.Create in Constants.SupportedPromptModes;
  • expose create in discovery metadata via prompt_values_supported;
  • make it available through AuthorizationRequest.PromptModes;
  • provide a supported interaction mechanism for directing the user to account creation;
  • correctly resume the authorization flow after registration;
  • include validation and interaction-flow tests.

Additional consideration

Adding Create only to SupportedPromptModes may not be sufficient. AuthorizeInteractionResponseGenerator.ProcessConsentAsync() currently rejects prompt modes other than none and consent after login processing. Since ProcessLoginAsync() does not handle or remove create, a complete implementation likely also needs interaction-generator behavior for this prompt.

Reproduction

  1. Configure an OpenID Connect client using Authorization Code flow.
  2. Send a valid authorization request with prompt=create.
  3. Inspect the resulting authorization context.
  4. PromptModes does not contain create, and the normal login interaction is used.

Version

  • Open.IdentityServer: 1.0.2
  • Package repository commit: 114dd0a798cf09455cee618dd4d35e41fe9049d3

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions