oxidecomputer / oxidecomputer/omicron

SAML allow nexus to use email as a NameID

Open
#6,563 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

idp
Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

Currently nexus will always use the "unspecified" NameID.
With #5604 fixed there is still the issue of using something other than "unspecified" on IDP side.

IDPs such as Okta allow you to set the NameID to one of the following:

    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>

As far as I can tell the setting on the IDP side must match what the SP side is using. For example this tool tip from the okta site also suggests that this is the case:
attatchment uh1YIR

If we wish to support more complex setups we need to add an additional setting in the silo IDP creation flow. Additionally if we wish to allow this to be changed after the IDP has been created we need some sort of API endpoints in nexus to do so, although we need to exercise caution here as changing this setting after an IDP has been in use can result in duplicate users.

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.

Research direction

Start by tracing the silo IDP creation flow and the existing SAML NameID handling. Determine how an IDP setting and any post-creation API would fit, including safeguards for duplicate users when the setting changes. Done means the supported NameID formats and their lifecycle are defined and covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, authentication, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.