PhantAuth

Random User Generator + OpenID Connect Provider. Like Lorem Ipsum, but for user accounts and authentication. PhantAuth was designed to simplify testing for applications using OpenID Connect authentication by making use of random generated users.
Operations
User

A user resource az OpenID Connect Core specifikációban definiált Standard Claims-eket tartalmazza, kiegészítve néhány PhantAuth specifikus property-vel.

Az itt szereplő, felhasználóval kapcsolatos műveletek használatára nincs szükség, amennyiben a PhantAuth rendszert mint OpenID Connect provider-t szeretnénk használni. A felhasználókat nem szükséges előre legenerálni, amennyiben a PhantAuth rendszernek szüksége van egy adott nevű felhasználó valamely adatára, úgy azt runtime legenerálja. A generátorok determinisztikus jellege garantálja, hogy ily módon ugyanazon felhasználói névhez mindig ugyanaz a user objektum generálódik. Kivétel ez alól a selfie token generálás, amikor is a megadott felhasználói adatokból készül egy, a későbbiekben belépési névként használható úgynevezett selfie token.

GET /user/{username}
GET /user/{username}/token/{kind}
Get a User
GET /user/{username}

Use this endpoint to generate a random user. The user is generated in a deterministic way, on the bases of the user name given as a path parameter. In the case of identical user names, the endpoint will generate the same user object. The properties of the generated user object are randomly generated on the basis of the user name. In lack of a user name, all calls generate a different user object to the randomly generated user name.

By providing an email address as the username parameter, you can customize the user picture by the use of the gravatar associated with the email address.

If the username parameter contains at least one dot (.) or space () character, the whole name is produced from the parameter, rather than being generated. In this case, these cahracters play the role of separator between the units of the full name (family name, given name).`

The result is always a user object. If you want to generate multiple users in one single step, you can do it by the use of Team generation. The members of a team are users randomly generated from the team name.

Path variables

username
string optional

The username or email used for generation purposes.

Responses

200 200

OK

Body
application/json
Object
sub
string required

Subject - User identifier at the issuer.

name
string

The user’s full name in displayable form, including all name parts, possibly including titles and suffixes, ordered according to the enduser’s locale and preferences.

address
Object

The user’s preferred postal address.

formatted
string

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair or as a single line feed character.

street_address
string

Full street address component, which MAY include house number, street name, post office box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair or as a single line feed character.

locality
string

City or locality component.

region
string

State, province, prefecture, or region component.

postal_code
string

Zip code or postal code component.

country
string

Country name component.

given_name
string

The user’s given name(s) or first name(s).

family_name
string

The user’s surname(s) or last name(s).

middle_name
string

The user’s middle name(s).

nickname
string

A casual name of the User that may or may not be the same as the given_name.

preferred_username
string

A shorthand name by which the user wishes to be referred to at the Relying Party.

profile
string

The URL of the user’s profile page.

picture
string

The URL of the user’s profile picture.

website
string

The URL of the user’s webpage or blog.

email
string

The user’s preferred email address.

email_verified
boolean

True if the user’s e-mail address has been verified; otherwise false.

gender
string

The enduser’s gender. Possible values are: female, male, and unknown.

birthdate
string

The user’s birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format.

zoneinfo
string

A string from the zoneinfo time zone database representing the user’s time zone. For example, Europe/Paris or America/Los_Angeles.

locale
string

The user’s locale, represented as a BCP47 [RFC5646] language tag. It is an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase letters, separated by a dash.

phone_number
string

The user’s preferred telephone number.

phone_number_verified
boolean

True if the enduser’s phone number has been verified; otherwise false.

updated_at
number

The time when the User’s information was last updated. Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the date/time.

me
string

The simplified URL of the user’s profile page.

password
string

The user’s generated password.

uid
string

The user’s simplified, shortened identifier at the Issuer.

webmail
string

The URL of user’s mailbox in a webmail application.

@id
string

The URL of the user’s JSON representation.

Examples
{
  "locale" : "en_US",
  "profile" : "https://phantauth.net/user/john.smith/profile",
  "nickname" : "John",
  "preferred_username" : "jsmith",
  "picture" : "https://www.gravatar.com/avatar/54c27dd1891df67163ef53616549933f?s=256&d=https://avatars.phantauth.net/ai/male/Vyb8Yrdv.jpg",
  "sub" : "john.smith",
  "website" : "https://phantauth.net",
  "email" : "john.smith.XPKEFHI@mailinator.com",
  "email_verified" : false,
  "gender" : "male",
  "birthdate" : "1950-02-10",
  "zoneinfo" : "America/Chicago",
  "phone_number" : "747-178-7374",
  "phone_number_verified" : true,
  "updated_at" : 1518220800,
  "me" : "https://phantauth.net/~john.smith",
  "password" : "Opha8TV2",
  "webmail" : "https://www.mailinator.com/v3/?zone=public&query=john.smith.XPKEFHI",
  "uid" : "tf+gMsdUWj0",
  "family_name" : "Smith",
  "given_name" : "John",
  "address" : {
    "street_address" : "160 Washington Walk",
    "formatted" : "160 Washington Walk\nSan Francisco 98239",
    "locality" : "San Francisco",
    "postal_code" : "98239",
    "country" : "USA"
  },
  "name" : "John Smith",
  "@id" : "https://phantauth.net/user/john.smith"
}
Create a User Selfie
POST /user

To create a selfie token from the user data, you need an opaqe string token, which contains the encoded user properties sent in the request. Later, the selfie token can be used as a login name. In this case, the user data is included in the selfie token, that is, the user properties are taken from the token. By the use of a selfie token, you can use your own user objects during the authentication process.

Its use, however, is limited by its relatively large size (more than 100 characters), which exceeds the maximum size of the user name in several systems.

Request body

Object
Example:
{
  "sub" : "john.smith",
  "locale" : "en_US",
  "nickname" : "John",
  "preferred_username" : "jsmith",
  "picture" : "https://www.gravatar.com/avatar/54c27dd1891df67163ef53616549933f?s=256&d=https://avatars.phantauth.net/ai/male/Vyb8Yrdv.jpg",
  "email" : "john.smith.XPKEFHI@mailinator.com",
  "email_verified" : false,
  "gender" : "male",
  "birthdate" : "1950-02-10",
  "zoneinfo" : "America/Chicago",
  "phone_number" : "747-178-7374",
  "phone_number_verified" : true,
  "updated_at" : 1518220800,
  "password" : "Opha8TV2",
  "family_name" : "Smith",
  "given_name" : "John",
  "address" : {
    "street_address" : "160 Washington Walk",
    "formatted" : "160 Washington Walk\nSan Francisco 98239",
    "locality" : "San Francisco",
    "postal_code" : "98239",
    "country" : "USA"
  },
  "name" : "John Smith"
}
sub
string required

Subject - User identifier at the issuer.

name
string

The user’s full name in displayable form, including all name parts, possibly including titles and suffixes, ordered according to the enduser’s locale and preferences.

address
Object

The user’s preferred postal address.

formatted
string

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair or as a single line feed character.

street_address
string

Full street address component, which MAY include house number, street name, post office box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair or as a single line feed character.

locality
string

City or locality component.

region
string

State, province, prefecture, or region component.

postal_code
string

Zip code or postal code component.

country
string

Country name component.

given_name
string

The user’s given name(s) or first name(s).

family_name
string

The user’s surname(s) or last name(s).

middle_name
string

The user’s middle name(s).

nickname
string

A casual name of the User that may or may not be the same as the given_name.

preferred_username
string

A shorthand name by which the user wishes to be referred to at the Relying Party.

profile
string

The URL of the user’s profile page.

picture
string

The URL of the user’s profile picture.

website
string

The URL of the user’s webpage or blog.

email
string

The user’s preferred email address.

email_verified
boolean

True if the user’s e-mail address has been verified; otherwise false.

gender
string

The enduser’s gender. Possible values are: female, male, and unknown.

birthdate
string

The user’s birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format.

zoneinfo
string

A string from the zoneinfo time zone database representing the user’s time zone. For example, Europe/Paris or America/Los_Angeles.

locale
string

The user’s locale, represented as a BCP47 [RFC5646] language tag. It is an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase letters, separated by a dash.

phone_number
string

The user’s preferred telephone number.

phone_number_verified
boolean

True if the enduser’s phone number has been verified; otherwise false.

updated_at
number

The time when the User’s information was last updated. Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the date/time.

me
string

The simplified URL of the user’s profile page.

password
string

The user’s generated password.

uid
string

The user’s simplified, shortened identifier at the Issuer.

webmail
string

The URL of user’s mailbox in a webmail application.

@id
string

The URL of the user’s JSON representation.

Responses

200 200

OK

text/plain
Get a User Token
GET /user/{username}/token/{kind}

It is used to generate OpenID Connect tokens as path parameters to a user of a given name.

This method is mainly used in the testing process, when, for example, the token received from the normal authenticaton flow is not available to the test code. Generating an access token, for example, will let you avoid authentication, and immediately call an operation requiring the access token.

Path variables

username
string required

A username or email.

kind
string required

Token type

Enumeration:
'access'
'refresh'
'authorization'
'id'
'selfie'
'plain'

Request parameters

scope
string optional

OpenID Connect scope

Responses

200 200

OK

text/plain
Client

A Client objektum standard OAuth2 / OpenID Connect client property-ket tartalmaz. Az OpenID Connect flow-k hasnzálatához szükség van egy client_id-re. Bizonyos flow-k ezen kívül client_secret használatát is igénylik. A Client objektum tartalmazza a client_id és client_secret értékeket, valamint néhány, a felhasználó számára megjelenítendő property-t (pl.logo, client neve, verziója).

GET /client/{client_id}
GET /client/{client_id}/token/{kind}
Get a Client
GET /client/{client_id}

Use this endpoint to generate a random client. The client is generated in a deterministic way, on the bases of the client ID given as a path parameter. In the case of identical client IDs, the endpoint will generate the same client object. The properties of the generated client object are randomly generated on the basis of the client ID. In lack of a client ID, all calls generate a different client object to the randomly generated client ID.

By providing an email address as the client_id parameter, you can customize the client logo by the use of the gravatar associated with the email address.

If the client_id parameter contains minimum one dot (.) or space () character, the client_name is produced from the parameter, rather than being generated.`

The result is always a client object. If you want to generate multiple clients in one single step, you can do it by the use of Fleet generation. The members of a fleet are clients randomly generated from the fleet name.

Path variables

client_id
string optional

A client ID or email.

Responses

200 200

OK

Body
application/json
Object
client_id
string required

OAuth 2.0 client identifier string.

client_secret
string

OAuth 2.0 client secret string.

redirect_uris
Array of unknown

Array of redirection URI strings for use in redirect-based flows such as the authorization code and implicit flows.

token_endpoint_auth_method
string

String indicator of the requested authentication method for the token endpoint.

grant_types
Array of unknown

Array of OAuth 2.0 grant type strings that the client can use at the token endpoint.

response_types
Array of unknown

Array of the OAuth 2.0 response type strings that the client can use at the authorization endpoint.

client_name
string

Human-readable string name of the client to be presented to the end-user during authorization.

client_uri
string

URL string of a web page providing information about the client.

logo_uri
string

URL string that references a logo for the client.

scope
string

String containing a space-separated list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749]) that the client can use when requesting access tokens.

contacts
Array of unknown

Array of strings representing ways to contact people responsible for this client, typically email addresses.

tos_uri
string

URL string that points to a human-readable terms of service document for the client that describes a contractual relationship between the end-user and the client that the end-user accepts when authorizing the client.

policy_uri
string

URL string that points to a human-readable privacy policy document that describes how the deployment organization collects, uses, retains, and discloses personal data.

jwks_uri
string

URL string referencing the client’s JSON Web Key (JWK) Set [RFC7517] document, which contains the client’s public keys.

jwks
Array of unknown

Client’s JSON Web Key Set [RFC7517] document value, which contains the client’s public keys. The value of this field MUST be a JSON object containing a valid JWK Set.

software_id
string

A unique identifier string (e.g., a Universally Unique Identifier (UUID)) assigned by the client developer or software publisher used by registration endpoints to identify the client software to be dynamically registered.

software_version
string

A version identifier string for the client software identified by software_id.

@id
string

URL of the Client’s JSON representation.

logo_email
string

An email address used to generate a gravatar.com logo_uri.

Examples
{
  "client_id" : "magic.toolbox",
  "client_secret" : "O68dVlLk",
  "client_name" : "Magic Toolbox",
  "client_uri" : "https://phantauth.net/client/magic.toolbox/profile",
  "logo_uri" : "https://www.gravatar.com/avatar/23a9c0277d8e4062b01f1097037f0d5b?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2F9b68RVeE.png",
  "logo_email" : "magic.toolbox.OUUWE4A@mailinator.com",
  "tos_uri" : "https://phantauth.net/client/magic.toolbox/tos",
  "policy_uri" : "https://phantauth.net/client/magic.toolbox/policy",
  "software_id" : "igG6Jgx7mfzPdjhBvHvqRQ",
  "software_version" : "3.8.0",
  "@id" : "https://phantauth.net/client/magic.toolbox"
}
Create a Client Selfie
POST /client

To create a selfie token from the client data, you need an opaqe string token, which contains the encoded client properties sent in the request. Later, the selfie token can be used as a client ID. In this case, the client data is included in the selfie token, that is, the client properties are taken from the token. By the use of a selfie token, you can use your own client objects in the authentication process.

Request body

Object
Example:
{
  "client_id" : "magic.toolbox",
  "client_secret" : "O68dVlLk",
  "client_name" : "Magic Toolbox",
  "logo_uri" : "https://www.gravatar.com/avatar/23a9c0277d8e4062b01f1097037f0d5b?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2F9b68RVeE.png",
  "logo_email" : "magic.toolbox.OUUWE4A@mailinator.com",
  "tos_uri" : "https://phantauth.net/client/magic.toolbox/tos",
  "policy_uri" : "https://phantauth.net/client/magic.toolbox/policy",
  "software_id" : "igG6Jgx7mfzPdjhBvHvqRQ",
  "software_version" : "3.8.0"
}
client_id
string required

OAuth 2.0 client identifier string.

client_secret
string

OAuth 2.0 client secret string.

redirect_uris
unknown

Array of redirection URI strings for use in redirect-based flows such as the authorization code and implicit flows.

token_endpoint_auth_method
string

String indicator of the requested authentication method for the token endpoint.

grant_types
unknown

Array of OAuth 2.0 grant type strings that the client can use at the token endpoint.

response_types
unknown

Array of the OAuth 2.0 response type strings that the client can use at the authorization endpoint.

client_name
string

Human-readable string name of the client to be presented to the end-user during authorization.

client_uri
string

URL string of a web page providing information about the client.

logo_uri
string

URL string that references a logo for the client.

scope
string

String containing a space-separated list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749]) that the client can use when requesting access tokens.

contacts
unknown

Array of strings representing ways to contact people responsible for this client, typically email addresses.

tos_uri
string

URL string that points to a human-readable terms of service document for the client that describes a contractual relationship between the end-user and the client that the end-user accepts when authorizing the client.

policy_uri
string

URL string that points to a human-readable privacy policy document that describes how the deployment organization collects, uses, retains, and discloses personal data.

jwks_uri
string

URL string referencing the client’s JSON Web Key (JWK) Set [RFC7517] document, which contains the client’s public keys.

jwks
unknown

Client’s JSON Web Key Set [RFC7517] document value, which contains the client’s public keys. The value of this field MUST be a JSON object containing a valid JWK Set.

software_id
string

A unique identifier string (e.g., a Universally Unique Identifier (UUID)) assigned by the client developer or software publisher used by registration endpoints to identify the client software to be dynamically registered.

software_version
string

A version identifier string for the client software identified by software_id.

@id
string

URL of the Client’s JSON representation.

logo_email
string

An email address used to generate a gravatar.com logo_uri.

Responses

200 200

OK

text/plain
Get a Client Token
GET /client/{client_id}/token/{kind}

It is used to generate a OpenID Connect token as a path parameter to a client of a given client ID.

It is primarily used for testing purposes, when, for example, the token from the standard authentication flow is not available to the test code.

Path variables

client_id
string required

A client ID or email.

kind
string required

Token type

Enumeration:
'registration'
'selfie'
'plain'

Responses

200 200

OK

text/plain
Team

A Team a felhasználók egy névvel ellátott csoportja. A Team objektum az azonosíthatóság, megjeleníthetőség érdekében rendelkezik néhány saját property-el (pl logo), de legfontosabb property-je a members, mely a team-hez tartozó user objektumokat tartalmazza.

GET /team/{teamname}
Get a Team
GET /team/{teamname}

Use this endpoint to generate a random group of users. The team is generated in a deterministic way, on the basis of the team name given as the path parameter. In the case of identical team names, the endpoint will generate the same team object. The properties of the generated team object are randomly generated on the basis of the team name. In lack of a team name, all calls generate a different team object to the randomly generated team name.

Path variables

teamname
string optional

The identifier or email address of the team; it is integrated in the sub property and is the basis of the other generated properties.

Responses

200 200

OK

Body
application/json
Object
sub
string required

The name or email address of a given team. The team properties and team members are generated from this name. If you provide an email address, you can customize the team logo by the use of the gravatar associated with the email address.

name
string

The displayed team name.

logo
string

The URL of the team logo, which can be customized by the gravatar associated with the email address in the logo_email property.

logo_email
string

The email address of the team, either generated or provided in the sub property. The team logo can be customized by the use of the gravater associated with this email address.

@id
string

URL of the Teams’s JSON representation.

profile
string

The URL of the Team profile.

members
Array of unknown

The user objects that generate a team member.

Examples
{
  "sub" : "dream.team",
  "name" : "Dream Team",
  "profile" : "https://phantauth.net/team/dream.team/profile",
  "logo" : "https://www.gravatar.com/avatar/0d6fbd4eb21c269933ca5bba043ab4aa?s=256&d=identicon",
  "logo_email" : "dream.team.HIECLNQ@mailinator.com",
  "@id" : "https://phantauth.net/team/dream.team",
  "members" : [
    {
      "locale" : "en_US",
      "profile" : "https://phantauth.net/user/ariana.riley.hudson/profile",
      "nickname" : "Ariana",
      "preferred_username" : "ahudson",
      "picture" : "https://www.gravatar.com/avatar/8b0562dd7dd8ff1d8d872fcf58972d6d?s=256&d=https://avatars.phantauth.net/ai/female/BeXDnkey.jpg",
      "sub" : "ariana.riley.hudson",
      "website" : "https://phantauth.net",
      "email" : "ariana.riley.hudson.VJ2ABXA@mailinator.com",
      "email_verified" : false,
      "gender" : "female",
      "birthdate" : "1938-11-19",
      "zoneinfo" : "America/Chicago",
      "phone_number" : "552-769-0026",
      "phone_number_verified" : true,
      "updated_at" : 1542585600,
      "me" : "https://phantauth.net/~ariana.riley.hudson",
      "password" : "cuTCy0IZ",
      "webmail" : "https://www.mailinator.com/v3/?zone=public&query=ariana.riley.hudson.VJ2ABXA",
      "uid" : "1sKcrGacQtY",
      "family_name" : "Hudson",
      "given_name" : "Ariana",
      "middle_name" : "Riley",
      "address" : {
        "street_address" : "62 Highland Place APT 63",
        "formatted" : "62 Highland Place APT 63\nMiami 30927",
        "locality" : "Miami",
        "postal_code" : "30927",
        "country" : "USA"
      },
      "name" : "Ariana Hudson",
      "@id" : "https://phantauth.net/user/ariana.riley.hudson"
    },
    {
      "locale" : "en_GB",
      "profile" : "https://phantauth.net/user/madeline.randall/profile",
      "nickname" : "Madeline",
      "preferred_username" : "mrandall",
      "picture" : "https://www.gravatar.com/avatar/eb3bac3d1654c56efbb93645770e5a60?s=256&d=https://avatars.phantauth.net/ai/female/pmbkErez.jpg",
      "sub" : "madeline.randall",
      "website" : "https://phantauth.net",
      "email" : "madeline.randall.P545AFI@mailinator.com",
      "email_verified" : true,
      "gender" : "female",
      "birthdate" : "1966-08-28",
      "zoneinfo" : "Europe/London",
      "phone_number" : "747-136-9890",
      "phone_number_verified" : true,
      "updated_at" : 1535414400,
      "me" : "https://phantauth.net/~madeline.randall",
      "password" : "xi89SZWX",
      "webmail" : "https://www.mailinator.com/v3/?zone=public&query=madeline.randall.P545AFI",
      "uid" : "5xjXrNaK8eU",
      "family_name" : "Randall",
      "given_name" : "Madeline",
      "address" : {
        "street_address" : "140 Atkins Avenue APT 126",
        "formatted" : "140 Atkins Avenue APT 126\nSan Francisco 48571",
        "locality" : "San Francisco",
        "postal_code" : "48571",
        "country" : "UnitedKingdom"
      },
      "name" : "Madeline Randall",
      "@id" : "https://phantauth.net/user/madeline.randall"
    },
    {
      "locale" : "fr_CA",
      "profile" : "https://phantauth.net/user/alexa.brooklyn.rollins/profile",
      "nickname" : "Alexa",
      "preferred_username" : "arollins",
      "picture" : "https://www.gravatar.com/avatar/404e4bf6b700625b670d84336fa38d52?s=256&d=https://avatars.phantauth.net/ai/female/pmbkyvez.jpg",
      "sub" : "alexa.brooklyn.rollins",
      "website" : "https://phantauth.net",
      "email" : "alexa.brooklyn.rollins.WHW7KNY@mailinator.com",
      "email_verified" : false,
      "gender" : "female",
      "birthdate" : "1920-02-29",
      "zoneinfo" : "Canada/Central",
      "phone_number" : "335-295-2273",
      "phone_number_verified" : true,
      "updated_at" : 1519776000,
      "me" : "https://phantauth.net/~alexa.brooklyn.rollins",
      "password" : "8h3tEVhM",
      "webmail" : "https://www.mailinator.com/v3/?zone=public&query=alexa.brooklyn.rollins.WHW7KNY",
      "uid" : "ji7mQ76imjY",
      "family_name" : "Rollins",
      "given_name" : "Alexa",
      "middle_name" : "Brooklyn",
      "address" : {
        "street_address" : "104 Herzi Street APT 39",
        "formatted" : "104 Herzi Street APT 39\nWashington 22412",
        "locality" : "Washington",
        "postal_code" : "22412",
        "country" : "Canada"
      },
      "name" : "Alexa Rollins",
      "@id" : "https://phantauth.net/user/alexa.brooklyn.rollins"
    },
    {
      "locale" : "en_AU",
      "profile" : "https://phantauth.net/user/cameron.barnes/profile",
      "nickname" : "Cameron",
      "preferred_username" : "cbarnes",
      "picture" : "https://www.gravatar.com/avatar/6cc04628ef7fb47eaa9a262b56b61e7d?s=256&d=https://avatars.phantauth.net/ai/male/wdL96rej.jpg",
      "sub" : "cameron.barnes",
      "website" : "https://phantauth.net",
      "email" : "cameron.barnes.UW4JUXI@mailinator.com",
      "email_verified" : false,
      "gender" : "male",
      "birthdate" : "1960-07-17",
      "zoneinfo" : "Australia/Sydney",
      "phone_number" : "449-465-925",
      "phone_number_verified" : true,
      "updated_at" : 1531785600,
      "me" : "https://phantauth.net/~cameron.barnes",
      "password" : "OL4y4cpb",
      "webmail" : "https://www.mailinator.com/v3/?zone=public&query=cameron.barnes.UW4JUXI",
      "uid" : "N4DJJyHMhUg",
      "family_name" : "Barnes",
      "given_name" : "Cameron",
      "address" : {
        "street_address" : "139 Aster Court",
        "formatted" : "139 Aster Court\nNew York 20333",
        "locality" : "New York",
        "postal_code" : "20333",
        "country" : "Australia"
      },
      "name" : "Cameron Barnes",
      "@id" : "https://phantauth.net/user/cameron.barnes"
    },
    {
      "locale" : "fr_CA",
      "profile" : "https://phantauth.net/user/kayden.abbott/profile",
      "nickname" : "Kayden",
      "preferred_username" : "kabbott",
      "picture" : "https://www.gravatar.com/avatar/0e72d45f96c44213f80f10b593ccba13?s=256&d=https://avatars.phantauth.net/ai/unknown/X7axLPay.jpg",
      "sub" : "kayden.abbott",
      "website" : "https://phantauth.net",
      "email" : "kayden.abbott.6VBRMHI@mailinator.com",
      "email_verified" : true,
      "gender" : "unknown",
      "birthdate" : "2016-02-28",
      "zoneinfo" : "Canada/Central",
      "phone_number" : "988-622-6683",
      "phone_number_verified" : false,
      "updated_at" : 1519776000,
      "me" : "https://phantauth.net/~kayden.abbott",
      "password" : "RUEJG2Vj",
      "webmail" : "https://www.mailinator.com/v3/?zone=public&query=kayden.abbott.6VBRMHI",
      "uid" : "VHNoCwU/+LE",
      "family_name" : "Abbott",
      "given_name" : "Kayden",
      "address" : {
        "street_address" : "110 Aster Court APT 299",
        "formatted" : "110 Aster Court APT 299\nMiami 16321",
        "locality" : "Miami",
        "postal_code" : "16321",
        "country" : "Canada"
      },
      "name" : "Kayden Abbott",
      "@id" : "https://phantauth.net/user/kayden.abbott"
    }
  ]
}
Fleet

A Fleet a client-ek egy névvel ellátott csoportja. A Fleet objektum az azonosíthatóság, megjeleníthetőség érdekében rendelkezik néhány saját property-vel (pl logo), de legfontosabb property-je a members, mely a fleet-hez tartozó client objektumokat tartalmazza.

GET /fleet/{fleetname}
Get a Fleet
GET /fleet/{fleetname}

Use this endpoint to generate a random group of clients. The feleet is generated in a deterministic way, on the basis of a fleet name given as a path parameter. In the case of identical fleet names, the endpoint will generate the same fleet object. The properties of the generated fleet object are randomly generated on the basis of the fleet name. In lack of a fleet name, all calls generate a different fleet object to the randomly generated fleet name.

Path variables

fleetname
string optional

The identifier or email address of the fleet; it is integrated in the sub property and is the basis of the other generated properties.

Responses

200 200

OK

Body
application/json
Object
sub
string required

The name or email address of a given fleet. The fleet properties and fleet members are generated from this name. If provide an email address, you can customize the fleet logo by the use of the gravatar associated with the email address.

name
string

The displayed fleet name.

logo
string

The URL of the fleet logo, which can be customized by the gravatar associated with the email address in the logo_email property.

logo_email
string

The email address of the fleet, either generated or provided in the sub property. The fleet logo can be customized by the use of the gravater associated with this email address.

@id
string

URL of the Fleet’s JSON representation.

profile
string

The URL of the Fleet profile.

members
Array of unknown

The client objects included in a fleet.

Examples
{
  "profile" : "https://phantauth.net/fleet/blue.fleet/profile",
  "sub" : "blue.fleet",
  "logo" : "https://www.gravatar.com/avatar/60757eca81bdd6768421ed3b669b651d?s=256&d=identicon",
  "logo_email" : "blue.fleet.6JBLL7Y@mailinator.com",
  "name" : "Blue Fleet",
  "@id" : "https://phantauth.net/fleet/blue.fleet",
  "members" : [
    {
      "logo_email" : "zamit.6UTF3FA@mailinator.com",
      "client_id" : "zamit~ueyonuvxhz0",
      "client_secret" : "o0Ie0Ph4",
      "client_name" : "Zamit",
      "client_uri" : "https://phantauth.net/client/zamit%7Eueyonuvxhz0/profile",
      "logo_uri" : "https://www.gravatar.com/avatar/849f9934a6aec97935cb40eadbf06d60?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2Fpnelv7bK.png",
      "tos_uri" : "https://phantauth.net/client/zamit%7Eueyonuvxhz0/tos",
      "policy_uri" : "https://phantauth.net/client/zamit%7Eueyonuvxhz0/policy",
      "software_id" : "tzpm4afosVpE65jyw55ZLA",
      "software_version" : "8.0.8",
      "@id" : "https://phantauth.net/client/zamit%7Eueyonuvxhz0"
    },
    {
      "logo_email" : "otcom.DVC7D4Y@mailinator.com",
      "client_id" : "otcom~kzwnwi3dcjc",
      "client_secret" : "W0UFeZTo",
      "client_name" : "Otcom",
      "client_uri" : "https://phantauth.net/client/otcom%7Ekzwnwi3dcjc/profile",
      "logo_uri" : "https://www.gravatar.com/avatar/102ea74126cec525eded6e2511ee4960?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2FQBeXrkby.png",
      "tos_uri" : "https://phantauth.net/client/otcom%7Ekzwnwi3dcjc/tos",
      "software_id" : "RqrMOl5ZNZeEoYNkCdg1AA",
      "policy_uri" : "https://phantauth.net/client/otcom%7Ekzwnwi3dcjc/policy",
      "software_version" : "8.0.9",
      "@id" : "https://phantauth.net/client/otcom%7Ekzwnwi3dcjc"
    },
    {
      "logo_email" : "greenlam.2XD4DYQ@mailinator.com",
      "client_id" : "greenlam~o3sbolv1qjc",
      "client_secret" : "jeXBkxJ4",
      "client_name" : "Greenlam",
      "client_uri" : "https://phantauth.net/client/greenlam%7Eo3sbolv1qjc/profile",
      "logo_uri" : "https://www.gravatar.com/avatar/0d304aa152b8edd056d1e7862364dec2?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2FLDdwLJe1.png",
      "tos_uri" : "https://phantauth.net/client/greenlam%7Eo3sbolv1qjc/tos",
      "policy_uri" : "https://phantauth.net/client/greenlam%7Eo3sbolv1qjc/policy",
      "software_id" : "0dQ9wd0fb1v2RPd1de-m6A",
      "software_version" : "6.4.2",
      "@id" : "https://phantauth.net/client/greenlam%7Eo3sbolv1qjc"
    },
    {
      "logo_email" : "holdlamis.4AP3BGI@mailinator.com",
      "client_id" : "holdlamis~1jvzg8zw3ie",
      "client_secret" : "N0dEVTVQ",
      "client_name" : "Holdlamis",
      "client_uri" : "https://phantauth.net/client/holdlamis%7E1jvzg8zw3ie/profile",
      "logo_uri" : "https://www.gravatar.com/avatar/14d66b1256d484d2ab268cbe58694bb9?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2FRb4x6nbB.png",
      "tos_uri" : "https://phantauth.net/client/holdlamis%7E1jvzg8zw3ie/tos",
      "policy_uri" : "https://phantauth.net/client/holdlamis%7E1jvzg8zw3ie/policy",
      "software_id" : "ReiInzn-af_1XjFhBwl2Kw",
      "software_version" : "9.0.5",
      "@id" : "https://phantauth.net/client/holdlamis%7E1jvzg8zw3ie"
    },
    {
      "logo_email" : "asoka.K2ZLAYQ@mailinator.com",
      "client_id" : "asoka~vu9rsfdq16m",
      "client_secret" : "92Qz6rSU",
      "client_name" : "Asoka",
      "client_uri" : "https://phantauth.net/client/asoka%7Evu9rsfdq16m/profile",
      "logo_uri" : "https://www.gravatar.com/avatar/7acc74527505772449417aed086c3b24?s=256&d=https%3A%2F%2Favatars.phantauth.net%2Ficon%2F6dBB3xd7.png",
      "tos_uri" : "https://phantauth.net/client/asoka%7Evu9rsfdq16m/tos",
      "policy_uri" : "https://phantauth.net/client/asoka%7Evu9rsfdq16m/policy",
      "software_id" : "s0GXgtm6HqPy0nayXt8g4w",
      "software_version" : "3.9.6",
      "@id" : "https://phantauth.net/client/asoka%7Evu9rsfdq16m"
    }
  ]
}
Tenant

A testreszabás ún. tenant-ok segítségével történik. Egy egy tenant tekinthető úgy mint egy önálló PhantAuth szolgáltatás. A tenant-ok saját véletlenszerű felhasználó generátor végpontokkal valamint OpenID Connect végpontokkal rendelkeznek.

A tenant-ok ún. domain-ekbe szervezhetők. A domain gyakorlatilag egy DNS zóna, mely tartalmazza az egyes tenant-ok beállításait. A tenant-ok is s a domain maga is DNS TXT rekordok segítségével konfigurálhatók.

A tenant issuer URL-je https://phantauth.net/_{tenant} fromátumú, ahol a tenant a tenant teljes DNS neve. A PhantAuth official tenant-ok esetén a phantauth.net elhagyható a név végéről. A community által létrehozott, megosztott tenant-ok esetén a phantauth.cf elhagyható a név végéről. A default tenant (default.phantauth.net) esetén az issuer URL azonos a PhantAuth base URL-el, azaz https://phantauth.net

A resource URL-ek a tenant issuer URL-hez képest relatívak, azaz pl a random user generátor végpont címe a faker nevű tenant esetén: https://phantauth.net/_faker/user

GET /tenant/{tenantname}
Get a Tenant
GET /tenant/{tenantname}

This endpoint allows you to get the data of a given PhantAuth tenant. To use the PhantAuth services, you don’t need this endpoint. It is, therefore, mainly used for debug/diagnostic purposes in tenant customization.

Tenantname is the name of the full DNS domain of the tenant you get. In the case of an official and shared tenant (phantauth.net and phantauth.cf DNS domains), the DNS domain can be omitted (e.g. default or faker).

Path variables

tenantname
string required

The tenant ID integrated in the sub property.

Responses

200 200

OK

Body
application/json
Object
sub
string required

The fully qualified DNS domain name of the tenant. In the case of official and shared tenants (phantauth.net and phantauth.cf DNS domain), the DNS domain can be omitted (e.g. default or faker).

issuer
string required

The URL of the tenant OpenID Connect issuer. This value allows you to get, for example, the OpenID Provider Metadata. As a webpage, it contains information on the use if the given tenant.

website
string

The website address associated with the tenant. If a tenant doesn’t have a website, its value is identical with that of the issuer property.

template
string

It defines the place of the templates of the HTML pages of the tenant in RFC 6570 - URI temaplate format. The URI template receives the page name in a resource parameter. By default, it takes the following value: https://default.phantauth.net{/resource}.

factory
string

The address of the custom random resource generator (user, team) in RFC 6570 - URI temaplate format. The URI template receives the type of the object to be generated (user, team) in the kind parameter, and the identifier of the object to be generated in the name parameter.

factories
Array of unknown

A list of resource types supported by the external generator set in factory.

depot
string

It defines the place of the CSV file containing the resource data in RFC 6570 - URI temaplate format. The URI template receives the type of the object to be generated (user, team) in the kind parameter.

The first line of the CSV file contains the resource property names, the following lines, on the other hand, contain the relevant data. In the case of nested properties, a ‘.’ character separates the elements of the property name (e.g. address.formatted).

depots
Array of unknown

A list of resource types supported by the external CSV set in depot.

userinfo
string
@id
string

The URL of the tenant’s JSON representation.

name
string

The displayed tenant name. In lack of such name, the DNS name of the tenant is displayed in the address bar of the tenant’s webpages.

logo
string

The URL of the tenant logo. The image from this address appears in the address bar of the tenant’s webpages and the pages that contain the list of available tenants.

favicon
string

The URL of the tenant favicon. The image from this address appears as a shortcut icon in the browser when a user visits the tenant’s webpages.

theme
string

The URL of the CSS style sheet used for the tenant’s webpages. The default webpage templates were created by the use of the Bootstrap library, therefore, the Bootstrap CSS URL has to be provided when such a webpage is used.

script
string

The URL of a custom JavaScript file can be automatically inserted in the login.html, consent.html, és test.html pages.

sheet
string

It is used to give the identifyer of a public Google Sheet document. The first line of the table contains the user property names, the following lines, on the other hand, contain the relevant data. In the case of nested properties, a ‘.’ character separates the elements of the property name (e.g. address.formatted).

summary
string

A one-line description, the watchword of the tenant. It appears on the tenant’s startup page and the pages that contain the list of available tenants. It takes the valua of an unformatted text.

attribution
string

The attribution of the external data source or random user generator. Its value can have markdown formatting, that is, the external source can contain highlights and links.

about
string

A detailed description of the tenant. If it takes the value of an URL, the description is downloaded from the given URL, otherwise the value it takes is the description itself. Markdown formatting can be used in the description.

domain
boolean

True in the case of a domain tenant collecting several tenants, otherwise false.

subtenant
boolean

True in the case of a tenant referred to in a domain tenant, otherwise false.

Examples
{
  "sub" : "faker",
  "issuer" : "https://phantauth.net/_faker",
  "subtenant" : false,
  "domain" : false,
  "flags" : "small",
  "logo" : "https://phantauth-faker.now.sh/faker-logo.svg",
  "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/united/bootstrap.min.css",
  "template" : "https://default.phantauth.net{/resource}",
  "factories" : [
    "team",
    "user"
  ],
  "website" : "https://phantauth.net/_faker",
  "name" : "PhantAuth Faker",
  "factory" : "https://faker.phantauth.net/api{/kind,name}",
  "@id" : "https://phantauth.net/_faker/tenant/faker"
}
Domain

A Domain objektum több tenant-ot fog össze, felfogható mint a tenant-ok egy csoportja. A PhantAuth official tenant-okat a phantauth.net azonosítójú domain fogja össze. Lehetőség van saját tenant-ok megosztására s regisztrálására a phantauth.cf nevű domain-en belül.

A domain használható tenant-ként is, azaz létezik issuer végpontja, valamint resource végpontjai is. A domain issuer URL-je https://phantauth.net/_{domain} fromátumú, ahol a domain a domain teljes DNS neve, azaz pl https://phantauth.net/_phantauth.net vagy https://phantauth.net/phantauth.cf. A default domain (phantauth.net) esetén a domain név elhagyható, azaz a default domain issuer URL-je https://phantauth.net/

GET /domain/{domainname}
Get a Domain
GET /domain/{domainname}

This endpoint allows you to get the data of a given PhantAuth domain. To use the PhantAuth services, you don’t need this endpoint. It is, therefore, mainly used for debug/diagnostic purposes in tenant customization.

Domainname is the fully qualified DNS name of the domain you get (e.g. phantauth.net or phantauth.cf).

Path variables

domainname
string required

The domain ID integrated in the sub property.

Responses

200 200

OK

Body
application/json
Object
sub
string

The fully qualified DNS name of the domain (e.g. phantauth.net).

name
string

The displayed domain name.

logo
string

The URL of the domain logo. The image from this address is displayed on the webpage of the domain.

@id
string

The URL of the domain’s JSON representation.

profile
string

The URL of the domain’s webpage.

members
Array of unknown

The tenants included in a domain.

Examples
{
  "profile" : "https://phantauth.net/domain/phantauth.net/profile",
  "sub" : "phantauth.net",
  "logo" : "https://www.phantauth.net/logo/phantauth-logo.svg",
  "name" : "PhantAuth Domain",
  "@id" : "https://phantauth.net/domain/phantauth.net",
  "members" : [
    {
      "issuer" : "https://phantauth.net",
      "sub" : "default",
      "subtenant" : false,
      "domain" : false,
      "logo" : "https://default.phantauth.net/logo/phantauth-logo-light.svg",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://phantauth.net",
      "name" : "PhantAuth Default",
      "@id" : "https://phantauth.net/tenant/default"
    },
    {
      "issuer" : "https://phantauth.net/_gods",
      "sub" : "gods",
      "subtenant" : false,
      "domain" : false,
      "depot" : "https://docs.google.com/spreadsheets/d/1Xa4mRcLWroJr2vUDhrJXGBcobYmpS8fNZxFpXw-M9DY/gviz/tq?tqx=out:csv",
      "depots" : [
        "user",
        "team"
      ],
      "flags" : "medium",
      "logo" : "https://cdn.staticaly.com/favicons/www.theoi.com",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/sandstone/bootstrap.min.css",
      "attribution" : "God pictures come from  [Theoi Project](https://www.theoi.com/), a site exploring Greek mythology and the gods in classical literature and art.",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://phantauth.net/_gods",
      "name" : "Greek Gods",
      "@id" : "https://phantauth.net/_gods/tenant/gods"
    },
    {
      "issuer" : "https://phantauth.net/_casual",
      "sub" : "casual",
      "subtenant" : false,
      "domain" : false,
      "logo" : "https://www.phantauth.net/logo/phantauth-logo-gray.svg",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css",
      "template" : "https://default.phantauth.net{/resource}",
      "factories" : [
        "user"
      ],
      "website" : "https://phantauth.net/_casual",
      "name" : "PhantAuth Casual",
      "factory" : "https://wt-51217f7b3eee6aead0123eeafe3b83e8-0.sandbox.auth0-extend.com/user{?name}",
      "@id" : "https://phantauth.net/_casual/tenant/casual"
    },
    {
      "issuer" : "https://phantauth.net/_faker",
      "sub" : "faker",
      "subtenant" : false,
      "domain" : false,
      "flags" : "small",
      "logo" : "https://phantauth-faker.now.sh/faker-logo.svg",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/united/bootstrap.min.css",
      "template" : "https://default.phantauth.net{/resource}",
      "factories" : [
        "team",
        "user"
      ],
      "website" : "https://phantauth.net/_faker",
      "name" : "PhantAuth Faker",
      "factory" : "https://faker.phantauth.net/api{/kind,name}",
      "@id" : "https://phantauth.net/_faker/tenant/faker"
    },
    {
      "issuer" : "https://phantauth.net/_uinames",
      "sub" : "uinames",
      "subtenant" : false,
      "domain" : false,
      "flags" : "small",
      "logo" : "https://uinames.com/assets/img/ios-precomposed.png",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/minty/bootstrap.min.css",
      "attribution" : "User data generated using [uinames.com API](https://uinames.com).",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://phantauth.net/_uinames",
      "name" : "uinames",
      "@id" : "https://phantauth.net/_uinames/tenant/uinames",
      "script" : "https://www.phantauth.net/selfie/uinames.js"
    },
    {
      "issuer" : "https://phantauth.net/_chance",
      "sub" : "chance",
      "subtenant" : false,
      "domain" : false,
      "flags" : "small",
      "logo" : "https://phantauth-chance.now.sh/chance-logo.png",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/united/bootstrap.min.css",
      "template" : "https://default.phantauth.net{/resource}",
      "factories" : [
        "user",
        "team"
      ],
      "website" : "https://phantauth.net/_chance",
      "name" : "PhantAuth Chance",
      "factory" : "https://chance.phantauth.net/api{/kind,name}",
      "@id" : "https://phantauth.net/_chance/tenant/chance"
    },
    {
      "issuer" : "https://phantauth.net/_sketch",
      "sub" : "sketch",
      "subtenant" : false,
      "domain" : false,
      "flags" : "sketch;small",
      "logo" : "https://www.phantauth.net/logo/phantauth-sketch.svg",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/sketchy/bootstrap.min.css",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://phantauth.net/_sketch",
      "name" : "PhantAuth Sketch",
      "@id" : "https://phantauth.net/_sketch/tenant/sketch"
    },
    {
      "issuer" : "https://phantauth.net/_randomuser",
      "sub" : "randomuser",
      "subtenant" : false,
      "domain" : false,
      "flags" : "small",
      "logo" : "https://cdn.staticaly.com/favicons/randomuser.me",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/sandstone/bootstrap.min.css",
      "attribution" : "User data generated using [RANDOM USER GENERATOR](https://randomuser.me/).",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://phantauth.net/_randomuser",
      "name" : "RANDOM USER",
      "@id" : "https://phantauth.net/_randomuser/tenant/randomuser",
      "script" : "https://www.phantauth.net/selfie/randomuser.js"
    },
    {
      "issuer" : "https://phantauth.net/_mockaroo",
      "sub" : "mockaroo",
      "subtenant" : false,
      "domain" : false,
      "flags" : "small",
      "logo" : "https://www.phantauth.net/selfie/kongaroo.svg",
      "favicon" : "https://default.phantauth.net/logo/phantauth-favicon.png",
      "theme" : "https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/minty/bootstrap.min.css",
      "attribution" : "User data generated using [Mockaroo's Mock APIs](https://mockaroo.com/mock_apis).",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://phantauth.net/_mockaroo",
      "name" : "Mockaroo",
      "@id" : "https://phantauth.net/_mockaroo/tenant/mockaroo",
      "script" : "https://www.phantauth.net/selfie/mockaroo.js"
    },
    {
      "issuer" : "https://mockuser.ga",
      "sub" : "mockuser.ga",
      "subtenant" : false,
      "domain" : false,
      "logo" : "https://www.phantauth.net/brand/mockuser/mockuser-logo-light.svg",
      "favicon" : "https://www.phantauth.net/brand/mockuser/mockuser-favicon.png",
      "theme" : "https://www.phantauth.net/brand/mockuser/bootstrap-mockuser.min.css",
      "template" : "https://default.phantauth.net{/resource}",
      "website" : "https://www.mockuser.ga",
      "name" : "Mock User",
      "@id" : "https://mockuser.ga/tenant/mockuser.ga"
    }
  ]
}
Type Definitions
User

The user resource contains the Standard Claims defined in the OpenID Connect Core specifications. It also includes some PhantAuth-specific property.

Object
sub
string required

Subject - User identifier at the issuer.

name
string

The user’s full name in displayable form, including all name parts, possibly including titles and suffixes, ordered according to the enduser’s locale and preferences.

address
given_name
string

The user’s given name(s) or first name(s).

family_name
string

The user’s surname(s) or last name(s).

middle_name
string

The user’s middle name(s).

nickname
string

A casual name of the User that may or may not be the same as the given_name.

preferred_username
string

A shorthand name by which the user wishes to be referred to at the Relying Party.

profile
string

The URL of the user’s profile page.

picture
string

The URL of the user’s profile picture.

website
string

The URL of the user’s webpage or blog.

email
string

The user’s preferred email address.

email_verified
boolean

True if the user’s e-mail address has been verified; otherwise false.

gender
string

The enduser’s gender. Possible values are: female, male, and unknown.

birthdate
string

The user’s birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format.

zoneinfo
string

A string from the zoneinfo time zone database representing the user’s time zone. For example, Europe/Paris or America/Los_Angeles.

locale
string

The user’s locale, represented as a BCP47 [RFC5646] language tag. It is an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase letters, separated by a dash.

phone_number
string

The user’s preferred telephone number.

phone_number_verified
boolean

True if the enduser’s phone number has been verified; otherwise false.

updated_at
number

The time when the User’s information was last updated. Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the date/time.

me
string

The simplified URL of the user’s profile page.

password
string

The user’s generated password.

uid
string

The user’s simplified, shortened identifier at the Issuer.

webmail
string

The URL of user’s mailbox in a webmail application.

@id
string

The URL of the user’s JSON representation.

Client

The client object contains standard OAuth2/OpenID Connect client properties. To use an OpenID Connect flow, you need a client_id. Certain flows also require a client_secret. The client object contains the client_id and client_secret values, as well as some properties to be displayed to the user (e.g. logo, client name, version).

Object
client_id
string required

OAuth 2.0 client identifier string.

client_secret
string

OAuth 2.0 client secret string.

redirect_uris
Array of unknown

Array of redirection URI strings for use in redirect-based flows such as the authorization code and implicit flows.

token_endpoint_auth_method
string

String indicator of the requested authentication method for the token endpoint.

grant_types
Array of unknown

Array of OAuth 2.0 grant type strings that the client can use at the token endpoint.

response_types
Array of unknown

Array of the OAuth 2.0 response type strings that the client can use at the authorization endpoint.

client_name
string

Human-readable string name of the client to be presented to the end-user during authorization.

client_uri
string

URL string of a web page providing information about the client.

logo_uri
string

URL string that references a logo for the client.

scope
string

String containing a space-separated list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749]) that the client can use when requesting access tokens.

contacts
Array of unknown

Array of strings representing ways to contact people responsible for this client, typically email addresses.

tos_uri
string

URL string that points to a human-readable terms of service document for the client that describes a contractual relationship between the end-user and the client that the end-user accepts when authorizing the client.

policy_uri
string

URL string that points to a human-readable privacy policy document that describes how the deployment organization collects, uses, retains, and discloses personal data.

jwks_uri
string

URL string referencing the client’s JSON Web Key (JWK) Set [RFC7517] document, which contains the client’s public keys.

jwks
Array of unknown

Client’s JSON Web Key Set [RFC7517] document value, which contains the client’s public keys. The value of this field MUST be a JSON object containing a valid JWK Set.

software_id
string

A unique identifier string (e.g., a Universally Unique Identifier (UUID)) assigned by the client developer or software publisher used by registration endpoints to identify the client software to be dynamically registered.

software_version
string

A version identifier string for the client software identified by software_id.

@id
string

URL of the Client’s JSON representation.

logo_email
string

An email address used to generate a gravatar.com logo_uri.

Team

Team is a group of users under a given name. For the purposes of identification and visualisation, the team object has its own properties (e.g. logo), the most important of which is the members, which contains the user objects of the team.

Object
sub
string required

The name or email address of a given team. The team properties and team members are generated from this name. If you provide an email address, you can customize the team logo by the use of the gravatar associated with the email address.

name
string

The displayed team name.

logo
string

The URL of the team logo, which can be customized by the gravatar associated with the email address in the logo_email property.

logo_email
string

The email address of the team, either generated or provided in the sub property. The team logo can be customized by the use of the gravater associated with this email address.

@id
string

URL of the Teams’s JSON representation.

profile
string

The URL of the Team profile.

members
Array of unknown

The user objects that generate a team member.

Fleet

Fleet is a group of clients under a given a name. For the purposes of identification and visualisation, the Fleet object has its own properties (e.g. logo), the most important of which is the members, which contains the user objects of the fleet.

Object
sub
string required

The name or email address of a given fleet. The fleet properties and fleet members are generated from this name. If provide an email address, you can customize the fleet logo by the use of the gravatar associated with the email address.

name
string

The displayed fleet name.

logo
string

The URL of the fleet logo, which can be customized by the gravatar associated with the email address in the logo_email property.

logo_email
string

The email address of the fleet, either generated or provided in the sub property. The fleet logo can be customized by the use of the gravater associated with this email address.

@id
string

URL of the Fleet’s JSON representation.

profile
string

The URL of the Fleet profile.

members
Array of unknown

The client objects included in a fleet.

Tenant

To customize the application, you need to use one or more so-called tenants. A tenant can be consiered as an independent PhantAuth service. A tenant has its own random user generator endpoints and OpenID Connect endpoints.

The tenants can be organised into so-called domains. Practically, a domain is a DNS zone, which contains the settings of the given tenant(s). The tenants as well as the domain can be configured by the use of DNS TXT records.

The URL of the tenant issuer is in https://phantauth.net/_{tenant} format, where tenant is the fully qualified DNS name associated with the tenant. When using a PhantAuth official tenant, you can omit phantauth.net from the end of the name. When using a community-created, shared tenant, phantauth.cf can be omitted from the end of the name. When using a default tenant (default.phantauth.net), the issuer URL is identical with the PhantAuth base URL, that is, https://phantauth.net.

The resource URL is relative to the URL of the tenant issuer URL, that is, the endpoint address of the random user generator for the tenant named faker is: https://phantauth.net/_faker/user.

Object
sub
string required

The fully qualified DNS domain name of the tenant. In the case of official and shared tenants (phantauth.net and phantauth.cf DNS domain), the DNS domain can be omitted (e.g. default or faker).

issuer
string required

The URL of the tenant OpenID Connect issuer. This value allows you to get, for example, the OpenID Provider Metadata. As a webpage, it contains information on the use if the given tenant.

website
string

The website address associated with the tenant. If a tenant doesn’t have a website, its value is identical with that of the issuer property.

template
string

It defines the place of the templates of the HTML pages of the tenant in RFC 6570 - URI temaplate format. The URI template receives the page name in a resource parameter. By default, it takes the following value: https://default.phantauth.net{/resource}.

factory
string

The address of the custom random resource generator (user, team) in RFC 6570 - URI temaplate format. The URI template receives the type of the object to be generated (user, team) in the kind parameter, and the identifier of the object to be generated in the name parameter.

factories
Array of unknown

A list of resource types supported by the external generator set in factory.

depot
string

It defines the place of the CSV file containing the resource data in RFC 6570 - URI temaplate format. The URI template receives the type of the object to be generated (user, team) in the kind parameter.

The first line of the CSV file contains the resource property names, the following lines, on the other hand, contain the relevant data. In the case of nested properties, a ‘.’ character separates the elements of the property name (e.g. address.formatted).

depots
Array of unknown

A list of resource types supported by the external CSV set in depot.

userinfo
string
@id
string

The URL of the tenant’s JSON representation.

name
string

The displayed tenant name. In lack of such name, the DNS name of the tenant is displayed in the address bar of the tenant’s webpages.

logo
string

The URL of the tenant logo. The image from this address appears in the address bar of the tenant’s webpages and the pages that contain the list of available tenants.

favicon
string

The URL of the tenant favicon. The image from this address appears as a shortcut icon in the browser when a user visits the tenant’s webpages.

theme
string

The URL of the CSS style sheet used for the tenant’s webpages. The default webpage templates were created by the use of the Bootstrap library, therefore, the Bootstrap CSS URL has to be provided when such a webpage is used.

script
string

The URL of a custom JavaScript file can be automatically inserted in the login.html, consent.html, és test.html pages.

sheet
string

It is used to give the identifyer of a public Google Sheet document. The first line of the table contains the user property names, the following lines, on the other hand, contain the relevant data. In the case of nested properties, a ‘.’ character separates the elements of the property name (e.g. address.formatted).

summary
string

A one-line description, the watchword of the tenant. It appears on the tenant’s startup page and the pages that contain the list of available tenants. It takes the valua of an unformatted text.

attribution
string

The attribution of the external data source or random user generator. Its value can have markdown formatting, that is, the external source can contain highlights and links.

about
string

A detailed description of the tenant. If it takes the value of an URL, the description is downloaded from the given URL, otherwise the value it takes is the description itself. Markdown formatting can be used in the description.

domain
boolean

True in the case of a domain tenant collecting several tenants, otherwise false.

subtenant
boolean

True in the case of a tenant referred to in a domain tenant, otherwise false.

Domain

A domain object contains several tenants; it can be considered a group of tenants. The PhantAuth official tenants are collected in a domain identified by phantauth.net. In the phantauth.cf domain, you can share and register your own tenants as well.

A domain can also be used as a tenant, that is, it has an issuer endpoint and some resource endpoints. The issuer URL of the domain is in https://phantauth.net/_{domain} format, where domain is the fully qualified DNS name associated with the domain, that is, for example https://phantauth.net/_phantauth.net or https://phantauth.net/phantauth.cf. When using a default domain (phantauth.net), the domain name, that is, the URL of the default domain issuer, https://phantauth.net/ can be omitted.

Object
sub
string

The fully qualified DNS name of the domain (e.g. phantauth.net).

name
string

The displayed domain name.

logo
string

The URL of the domain logo. The image from this address is displayed on the webpage of the domain.

@id
string

The URL of the domain’s JSON representation.

profile
string

The URL of the domain’s webpage.

members
Array of unknown

The tenants included in a domain.

Address
Object
formatted
string

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair or as a single line feed character.

street_address
string

Full street address component, which MAY include house number, street name, post office box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair or as a single line feed character.

locality
string

City or locality component.

region
string

State, province, prefecture, or region component.

postal_code
string

Zip code or postal code component.

country
string

Country name component.

OpenID Connect

The OpenID Connect Provider of PhantAuth supports the flows listed in the OpenID Connect specifications (Hybrid, Implicit, Authorization Code), as well as the Resource Owner Password grant type, specified in the OAuth 2.0 specifications. PhantAuth as an OpenID Connect Provider can be integrated with a variety of web applications, mobil applications, and backend applications. The integration can be either direct, as in the case of the OpenID Connect Provider, or through an authentication integration service, as in the case of Auth0 or Azure Active Directory B2C. To learn more, please go to chapter Integration.

Examples:

Random User

The random user generator of PhantAuth can also be used separately, independent of the OpenID Connect Provider. You can generate an optional number of test users. In the knowledge of their user name, the data of the generated users can be regenerated at any time (OpenID Connect sub claim). The generated users have a unique, operational, disposable email address, a profile picture selected from one of the multiple pools of pictures, and the usual profile data. Custom email addresses and profile pictures may also be added. The random user generator of PhantAuth can be fully customized. Additionally, you can link an external generator to the application. For details,please go to chapter Generator.

Test pages:

Every random generated user has a profile page, which contains their profile data in a simple one-page format.

Profile examples:

CodeSandbox

The use of the random user generator and the direct integration of the OpenID Connect is demonstrated through a set of CodeSandbox samples. The sample applications are run directly from CodeSandbox, so the source code is easy to view, edit, and test.

Examples:

Tenants

The PhantAuth is extremely versatile and customizable. You can use your own random user service, or generate users from an external .csv file or Google Sheet. You can use a set of Bootstrap themes to tailor the look and feel of the profile, morover, you can fundamentally change the same look and feel by the use of your own HTML templates. To find out more, please go to chapter Tenant.

To customize the application, you need to use one or more so-called tenants. A tenant can be consiered as an independent PhantAuth service. A tenant has its own random user generator endpoints and OpenID Connect endpoints.

The tenants can be organised into so-called domains. Practically, a domain is a DNS zone, which contains the settings of the given tenant(s). The tenants as well as the domain can be configured by the use of DNS TXT records.

In addition to the default tenant, the PhantAuth Domain contains some sample tenants, which are primarily designed to demonstrate customitability, a range of hosting possibilities, and the links to external services. In most cases, using the default tenant is enough.

Anyone can create a domain and the tenants. Sharing the tenants is facilitated by the PhantAuth Shared Domain. A shared domain is connected to the phantauth.cf DNS zone, where anyone can create tenant configuration notes by the use of the FreeDNS service.

Concept

The internal structure of PhantAuth is modular enough to allow certain elements to be customized or even replaced. The customized PhantAuth instances can be considered as separate services, which are independent from the original one. For the sake of simplicity, the customized PhantAuth instances will be called tenants.

The customized PhantAuth instances (tenants) have a different URL from that of the default tenant. For technological and cloud hosting purposes, it is advised that only the beginning of the path component of these URLs differs from the default PhantAuth URL. Similarly, the path component of a tenant URL should start with a low line character ("_"). So the general format of a tenant URL is:

https://phantauth.net/_TENANT

where TENANT is the name of the tenant. The tenant name is a DNS domain name at the same time, which may lack .phantauth.net or .phantauth.cf from the end.

DNS for configuration

When desiging PhantAuth, the aim is that PhantAuth can run without a database, and it is configurable by the users. This can be achieved if for the purpose of storing the tenant configuration, the system uses the special TXT records of the Domain Name System (DNS), in compliance with the RFC 6763 specifications. So the tenant name is one or more DNS TXT records. These TXT records contain the configuration properties in NAME=VALUE format.

This allows anyone to create their own tenants by creating a DNS domain and the TXT records in that domain. Freenom, a service provider, allows you to register some top-level domains (.tk, .ml, .ga, .cf, .gq) free charge. The domain registered this way can be managed on the online interface of Freenom or transferred to an other free service provider offering a more convenient DNS name server (e.g. CloudFlare). Additionally, FreeDNS allows you to create DNS records within a second- or third level domain that is privately owned or shared with a community. In this case, you are advised to create the entries within the phantauth.cf domain, because here you can omit the .phantauth.cf from the tenant name in the URL. This means that a tenant with a name of mytenant.phantauth.cf can be referred to in the shorther https://phantauth.net/_mytenant format, rather than the longer https://phantauth.net/_mytenant.phantauth.cf URL . Similar to .phantauth.cf, the phantauth.net can be omitted, thus the officially supported and the example tenants can be referred to by their short names (e.g. https://phantauth.net/_faker).

In a nutshell, to create a tenant, you have the following options:

  • With TXT records in a domain registered at Freenom, either on the online interface of Freenom or that of another free DNS service provider (e.g. CloudFlare).

  • With TXT records created in a second- or third level domain shared with a community, by using FreeDNS.

  • With TXT records created in your own existing DNS domain, by the use of an any DNS software.

Parameters

The below table contains a summary of the tenant parameters having an effect on the operation of the tenants.

Property Description
name the displayed name of the tenant
flags generator flags having an effect on the login page
theme the address of the Bootstrap theme
template the address of the HTML page templates
factory the address of the external user generator
depot the address of the external user database
sheet the identifier of the Google Sheets document containing the user database
script the JavaScript URL inserted in the HTML pages
summary a one-line summary of the tenant
about a detailed description of the tenant
attribution the specifications of the external source
logo the logo of the tenant
favicon the favicon of the tenant’s web pages

name

The displayed name of the tenant is defined in the name parameter. In lack of such a name, the tenant’s DNS name is displayed. This name appears in the address bar of the tenant’s webpages.

flags

This parameter contains the flags that affect the operation of a tenant (see Flags). Currently, the flags affecting the team size are used in the login screen. If any of the flags is a team size flag, you can select the user from a list in the login screen, rather than using an input field. It can take the following values:

  • tiny
  • small
  • medium
  • large

theme

The HTML page templates of a tenant are created by the use of the Bootstrap library. This allows you to customize the layout and the colours of the pages by using external Bootstrap CSS files. The theme parameter contains the URL of the Bootstrap CSS file used in the pages. It is optional; in lack of such a parameter, the tenant’s HTML pages have the default layout provided in the PhantAuth developer portal.

template

The place of the HTML page templates of a tenant is specified by the template parameter. The value of the parameter is n RFC 6570 - URI temaplate expression. The URI template receives the page name in a resource parameter.

The default value of the template parameter:

https://default.phantauth.net{/resource}

The resource URI template parameter may take the following values:

Value Description
tenant.html the tenant’s webpage; it contains a short description and the entry points of the tenant
user.html the user’s profile page
login.html the login page used for signing in
consent.html the content page used for signing in
team.html the profile page of the user group
client.html the profile page of a client
fleet.html the profile page of the client group
policy.html the client’s privacy policy
tos.html a client’s terms of service
test.html a login test page of the user generator and OpenID Connect

If you use your own template, the pages are fully customizable. The templates use a template engine called Thymeleaf, which provides flexible template options. The source of the default template is available in the phantauth-default GitHub repository. If you wish to create your own templates, you are advised to produce them from these templates.

factory

PhantAuth allows you to use your own random resource (user, team) generator. To do so, you need to provide its address in the factory tenant parameter. The value of the parameter is an RFC 6570 - URI temaplate expression. The URI template receives the type of the object (user, team) to be generated in the kind parameter, and the identifier of the object to be generated in the name parameter.

factories

In the factories parameter, you can specify the resource types that can be generated by the external generator set in the factory parameter. It takes the value of one or more strings from the following: user, team.

depot

Instead of generating a user and team resource, you can randomly select them from a pre-created inventory. In this case, the URL of the CSV file containing the resources can be specified in the depot parameter. The value of the parameter is an RFC 6570 - URI temaplate expression. The URI template receives the type of the object (user, team) to be generated in the kind parameter.

The first line of the CSV file contains the resource property names, the following lines, on the other hand, contain the relevant data. In the case of nested properties, a “.” character separates the elements of the property name (e.g. address.formatted).

depots

In the depots parameter, you can specify the purpose of the external source set in the depot parameter. It takes the value of one or more strings from the following: user, team.

sheet

You can randomly select the user data from a Google Sheets document. In the sheet parameter, you can specify the identifier of a public Google Sheets document. The first row of the table contains the user property names, the following rows contain the relating data. In the case of nested properties, a “.” character is used to separate the elements of the property name (e.g. address.formatted).

The tenant named gods is an example for the use of the sheet parameter. It provides the user data in a public Google Sheets document. In this case, the identifier of the sheet is 1Xa4mRcLWroJr2vUDhrJXGBcobYmpS8fNZxFpXw-M9DY, and the associated TXT record is:

gods    120 IN  TXT "sheet=1Xa4mRcLWroJr2vUDhrJXGBcobYmpS8fNZxFpXw-M9DY"

script

You can automatically insert a custom JavaScript file in the login.html, consent.html, and test.html pages. The URL of this file can be specified in the script parameter. By inserting a custom JavaScript file, you can also integrate a client-side random user generator.

summary

You can provide a short, one-line description, a watchword for the tenant in the summary parameter. It appears on the tenant’s startup page and all the pages that contain a list of available tenants.

about

To provide a detailed description of the tenant, use the about parameter. If it takes the value of a URL, the description is downloaded from the given URL; otherwise the value is the description itself. The description may have markdown formatting.

attribution

It is an external data source. If you use a random user generator, you can specify the attribution in the attribution parameter. The attribution may have markdown formatting, that is, you can highlight any element or provide a link to an external source:

randomuser  120 IN  TXT "attribution=User data generated using [RANDOM USER GENERATOR](https://randomuser.me/)."

It is the URL of the tenant’s logo. The image at this address appears in the address bar of the tenant’s webpages.

favicon

Use the favicon parameter to provide the URL of the favicon. The image at this address appears as a shortcut icon in the browser when a user visits the tenant’s webpages.

Examples

PhantAuth offers several examples for creating a custom tenant. They are ready-to-use tenants, although primarily created to show examples for customization.

faker

A PhantAuth Faker tenant contains a generator built on the JavaScript Faker library. The generator runs on the serverless deployment platform of ZEIT Now, available free of charge. Its source code is accessible in the phantauth-faker GitHub repository. Its DNS configuration is:

faker.phantauth.net. 120    IN  TXT "factories=team"
faker.phantauth.net. 120    IN  TXT "factories=user"
faker.phantauth.net. 120    IN  TXT "flags=small"
faker.phantauth.net. 120    IN  TXT "factory=https://phantauth-faker.now.sh/api{/kind,name}"
faker.phantauth.net. 120    IN  TXT "userinfo=Dream Team"
faker.phantauth.net. 120    IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/united/bootstrap.min.css"
faker.phantauth.net. 120    IN  TXT "logo=https://phantauth-faker.now.sh/faker-logo.svg"
faker.phantauth.net. 120    IN  TXT "name=PhantAuth Faker"

chance

A PhantAuth Chance tenant contains a generator built on the JavaScript Chance library. The generator runs on the serverless deployment platform of ZEIT Now, available free of charge. Its source code is accessible in the phantauth-chance GitHub repository. Its DNS configuration is:

chance.phantauth.net. 120   IN  TXT "flags=small"
chance.phantauth.net. 120   IN  TXT "name=PhantAuth Chance"
chance.phantauth.net. 120   IN  TXT "factory=https://phantauth-chance.now.sh/api{/kind,name}"
chance.phantauth.net. 120   IN  TXT "factories=team"
chance.phantauth.net. 120   IN  TXT "factories=user"
chance.phantauth.net. 120   IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/united/bootstrap.min.css"
chance.phantauth.net. 120   IN  TXT "logo=https://phantauth-chance.now.sh/chance-logo.png"

casual

A PhantAuth Casual tenant contains a generator built on the JavaScript Casual library. The generator runs on the serverless deployment platform of Auth0 Webtask, available free of charge. Its source code is accessible in the phantauth-casual GitHub repository. Its DNS configuration is:

casual.phantauth.net. 120   IN  TXT "logo=https://www.phantauth.net/logo/phantauth-logo-gray.svg"
casual.phantauth.net. 120   IN  TXT "name=PhantAuth Casual"
casual.phantauth.net. 120   IN  TXT "factory=https://wt-51217f7b3eee6aead0123eeafe3b83e8-0.sandbox.auth0-extend.com/user{?name}"
casual.phantauth.net. 120   IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"

gods

For the Greek Gods tenant, the user data is contained in a public Google Sheets document. Its DNS configuration is:

gods.phantauth.net. 120 IN  TXT "attribution=God pictures come from  [Theoi Project](https://www.theoi.com/), a site exploring Greek mythology and the gods in classical literature and art."
gods.phantauth.net. 120 IN  TXT "name=Greek Gods"
gods.phantauth.net. 120 IN  TXT "flags=medium"
gods.phantauth.net. 120 IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/sandstone/bootstrap.min.css"
gods.phantauth.net. 120 IN  TXT "logo=https://cdn.staticaly.com/favicons/www.theoi.com"
gods.phantauth.net. 120 IN  TXT "sheet=1Xa4mRcLWroJr2vUDhrJXGBcobYmpS8fNZxFpXw-M9DY"

randomuser

The RANDOM USER tenant uses the popular https://randomuser.me service to generate random users. The randomuser.me service is called on the client side, the call is contained in the randomuser.js script given in the script parameter. Its DNS configuration is:

randomuser.phantauth.net.   120 IN  TXT "attribution=User data generated using [RANDOM USER GENERATOR](https://randomuser.me/)."
randomuser.phantauth.net.   120 IN  TXT "script=https://www.phantauth.net/selfie/randomuser.js"
randomuser.phantauth.net.   120 IN  TXT "flags=small"
randomuser.phantauth.net.   120 IN  TXT "name=RANDOM USER"
randomuser.phantauth.net.   120 IN  TXT "logo=https://cdn.staticaly.com/favicons/randomuser.me"
randomuser.phantauth.net.   120 IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/sandstone/bootstrap.min.css"

uinames

The uinames tenant uses the https://uinames.com service to generate random users. The uinames.com service is called on the client side, the call is contained in the uinames.js script given in the script parameter. Its DNS configuration is:

uinames.phantauth.net.  120 IN  TXT "attribution=User data generated using [uinames.com API](https://uinames.com)."
uinames.phantauth.net.  120 IN  TXT "logo=https://uinames.com/assets/img/ios-precomposed.png"
uinames.phantauth.net.  120 IN  TXT "flags=small"
uinames.phantauth.net.  120 IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/minty/bootstrap.min.css"
uinames.phantauth.net.  120 IN  TXT "name=uinames"
uinames.phantauth.net.  120 IN  TXT "script=https://www.phantauth.net/selfie/uinames.js"

mockaroo

The Mockaroo tenant uses the https://mockaroo.com service to generate random users. The mockaroo.com service is called on the client side, the call is contained in the mockaroo.js script given in the script parameter. Its DNS configuration is:

mockaroo.phantauth.net. 120 IN  TXT "attribution=User data generated using [Mockaroo's Mock APIs](https://mockaroo.com/mock_apis)."
mockaroo.phantauth.net. 120 IN  TXT "script=https://www.phantauth.net/selfie/mockaroo.js"
mockaroo.phantauth.net. 120 IN  TXT "logo=https://www.phantauth.net/selfie/kongaroo.svg"
mockaroo.phantauth.net. 120 IN  TXT "flags=small"
mockaroo.phantauth.net. 120 IN  TXT "theme=https://stackpath.bootstrapcdn.com/bootswatch/4.2.1/minty/bootstrap.min.css"
mockaroo.phantauth.net. 120 IN  TXT "name=Mockaroo"
Pricing

PhantAuth is a free, open-source, non-profit application. If you find this service useful and can afford, please make a small donation as a contribution to the operation costs (domain registration, service hosting, etc.)

Donate on Ko-fi | Donate on Liberapay | Donate on PayPal

Generator

The basic concept of PhantAuth is that it generates data in a random but deterministic way. To achieve this goal, a so-called pseudorandom number generator (PRNG) is used. Each object type has an identifier (login name for user, client_id for client, etc.) By using a given hash algorithm, the value of the pseudorandom generator seed is produced from this identifier. Then, every property of the given object is generated with the pseudorandom generator started from this seed value. Taking advantage of the special feature of the pseudorandom number generator, also called as deterministic random bit generator (DRBG), that is, it generates the same random value series started from the same seed, the identifier clearly defines the object generated from it. That is, by the use of an identifier and generator, you can regenarate the properties of a given object at any time.

Based on the above concept, PhantAuth is absolutely stateless, and no storage medium is necessary. So, a randomly selected login name will “exist”, and the properties of the “associated” user can be generated.

Identifier

In brief, an object is defined by its identifier. The name of the identifier of a user or client object is sub or client_id used in the OpenID Connect specifications. The name of the identifier property of other PhantAuth-specific objects that are not included in the specifications is sub.

The identifier may contain any character.

Customization

Sometimes you may want to customize the properties generated from the identifier. Although the identifier may contain any character, and its structure is optional, you can customize the generated values if a certain structure is used.

Flags

You can use a variety of flags to customize or give the parameters of certain object properties (user, client, etc.). The flags can be grouped by their effect on the generation of the properties. Basically, a flag is a keyword. You can set more than one flags to affect the generation of a variety of properties at the same time. To separate the flags from one another and the rest of the identifier, you need to use a semicolon ;:

joe;female;kitten

In the above example, the user generated by the user generator is female, and her avatar is a randomly selected sketched kitten avatar. The other features are deterministically generated from the name “joe”, that is, their values are not affected by the two flags. The profile page of this example can be found here.

Please note that the flags form part of the identifier, as a different flag allows you to generate a different object.

User gender flags

The following flags modify the gender of the generated user.

Flag Description
male The gender property of the generated user is male, independent of the user’s name
female The gender property of the generated user is female, independent of the user’s name
guess The gender property is defined on the basis of the generated user’s given name (default)
nogender The generated user doesn’t have a gender property
User avatar flags

The following flags modify the generated avatar image.

Avatar Flag Description
ai AI type generated, photo-like avatars (default)
sketch sketched photo-like avataaars avatars
photo photo avatars
dice pixel art-style DiceBear avatars
kitten ROBOHASH-generated sketched kitten avatars
adorable Adorable Avatars
mp simple, cartoon-style silhouetted outline of a person (does not vary by user)
identicon a geometric pattern based on an email hash
monsterid a generated “monster” with different colors, faces, etc.
wavatar generated faces with varying features and backgrounds
retro awesome generated, 8-bit arcade-style pixelated faces
robohash a generated robot with different colors, faces, etc.
blank a transparent PNG image
notfound return an HTTP 404 (File Not Found) response
noavatar the user will not have a picture property

The following flags modify the generated logo.

Logo Flag Description
icon Game-icons.net icon as a logo (default)
fractal Electric Sheep fractal as a logo
Group size flags

The following flag modify the sizes of the generated team (group of users) and fleet (group of clients).

Flag Size
tiny 5 (default)
small 10
medium 25
large 50
huge 100

Name

In most cases, the generated objects have a full name, which is generated from the identifier. Instead of being generated, the full name can be produced from the identifier, if the identifier contains at least one period (.) or space () character. In such cases, these characters play the role of separator between the parts of the full name (e.g. family name, given name). That is, the full name isn’t randomly generated from the identifier but, by taking the separator characters into account, it is produced from the single parts of the full name (with capitalised initial letters). For this purpose, it is advised to use a period character, rather than a space character.

joe.black;sketch

In the above example: The full name of the user generated by the user generator is Joe Black (and his avatar is a skecthed profile avatar). The profile page of this example can be found here.

Picture

In most cases, the generated objects have an image (avatar for a user, logo for a client), which is generated from the identifier. The flags determine which pre-defined inventory the image comes from (see flags). It can be further customized by the use of Gravatar.

Each object has a generated unique email address (email for a user, logo_email for any other objects). To customize the image of a given object, you need to assign the gravatar image to this email address. By default, an object has a gravatar image, and the generated image is the default value of the gravatar URL only. In other words, as soon as you create a gravatar image to a given email address, that image will appear as the image associated with the given object.

Email

A disposable, operational email address suitable for receiving incoming emails is generated to each object. You can use your own email address (e.g. a previously set test email address) instead of a generated email address, if you prefer. In this case, the identifier contains an email address. Consequently, the image associated with the given object is the gravatar image assigned to the email address contained in the identifier.

ivan.test.szkiba@spam4.me

In the above example: The email address of the user generated by the user generator is ivan.test.szkiba@spam4.me (and his name is Ivan Test Szkiba). The profile page of this example can be found here.

Custom Generators

PhantAuth can use external data sources and generators as well. The only restriction is that the external generator has to be deterministic. This means that even if called several times, it has to generate the same object to the same identifier.

A special case of external generators is if an external data source is used. In such cases, the properties of a given object can be provided in a comma separated value (CSV) file or a Google Sheets document.

The external data sources and generators can be defined by the use of so-called tenants. To learn more, please go to chapter Tenant.