Skip to content

The ecosystem_anon_id_keys has two layers of nesting, seems like it should only need one #5992

@rfk

Description

@rfk

If I fetch the client config doc from https://accounts.stage.mozaws.net/.well-known/fxa-client-configuration it tells me:

{
  "auth_server_base_url": "https://api-accounts.stage.mozaws.net",
  "oauth_server_base_url": "https://oauth.stage.mozaws.net",
  "pairing_server_base_uri": "wss://channelserver.services.mozilla.com",
  "profile_server_base_url": "https://profile.stage.mozaws.net",
  "sync_tokenserver_base_url": "https://token.stage.mozaws.net",
  "ecosystem_anon_id_keys": [
    {
      "LlU4keOmhTuq9fCNnpIldYGT9vT9dIDwnu_SBtTgeEQ": {
        "crv": "P-256",
        "kid": "LlU4keOmhTuq9fCNnpIldYGT9vT9dIDwnu_SBtTgeEQ",
        "kty": "EC",
        "x": "i3FM3OFSCZEoqu-jtelXwKt6AL4ODQ75NUdHbcLWQSo",
        "y": "nW-S3QiHDo-9hwfBhKnGKarkt_PVqVyIPUytjutTunY"
      }
    }
  ]
}

The ecosystem_anon_id_keys field here looks like an array, whose items are objects mapping key ids to key data. If we some day come to advertise a second key here, would it end up as a new array member like this:

  "ecosystem_anon_id_keys": [
    {
      "LlU4keOmhTuq9fCNnpIldYGT9vT9dIDwnu_SBtTgeEQ": {
        "crv": "P-256",
        "kid": "LlU4keOmhTuq9fCNnpIldYGT9vT9dIDwnu_SBtTgeEQ",
        "kty": "EC",
        "x": "i3FM3OFSCZEoqu-jtelXwKt6AL4ODQ75NUdHbcLWQSo",
        "y": "nW-S3QiHDo-9hwfBhKnGKarkt_PVqVyIPUytjutTunY"
      }
    },
    {
      "new-key-id": {
        "crv": "P-256",
        "kid": "new-key-id",
        "kty": "EC",
        "x": "xxx",
        "y": "y"
      }
    }
  ]

Or would it appear as another member of the map with the existing key, like this:

  "ecosystem_anon_id_keys": [
    {
      "LlU4keOmhTuq9fCNnpIldYGT9vT9dIDwnu_SBtTgeEQ": {
        "crv": "P-256",
        "kid": "LlU4keOmhTuq9fCNnpIldYGT9vT9dIDwnu_SBtTgeEQ",
        "kty": "EC",
        "x": "i3FM3OFSCZEoqu-jtelXwKt6AL4ODQ75NUdHbcLWQSo",
        "y": "nW-S3QiHDo-9hwfBhKnGKarkt_PVqVyIPUytjutTunY"
      },
      "new-key-id": {
        "crv": "P-256",
        "kid": "new-key-id",
        "kty": "EC",
        "x": "xxx",
        "y": "y"
      }
    }
  ]

I feel like one of the layers of nesting here is not necessary, but I don't have strong opinions about which one.

As a point of comparison, the oauth JWKs endpoint returns a list of keys without indirecting through a map of key ids.

┆Issue is synchronized with this Jira Task
┆Issue Number: FXA-2312

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions