1. Verify
  2. eIDs
  3. German Personalausweis

Personalausweis overview

CountryGermany
Operated byFederal Ministry of the Interior and Community
eID service provideradesso Group
acr_valuesurn:grn:authn:de:personalausweis
Levels of assurance (LoA)High
User datasub (from the Pseudonym)
Optional user data

given_name · family_name · birthdate · address · nationality and more, depending on the data profile

FlowsSame device · Another device (flow selection)

Token example

Triggered with acr_values=urn:grn:authn:de:personalausweis.

The level of assurance for all Personalausweis authentications is: High. Learn more about assurance levels.

{
"identityscheme": "deadesso",
Overall eID used to authenticate
"authenticationtype": "urn:grn:authn:de:personalausweis",
acr_values used to authenticate
"authenticationmethod": "urn:grn:authn:de:personalausweis",
"nameidentifier": "869d0e76687e4bae97b44c55bb0242db",
Legacy format of 'sub'
"sub": "{869d0e76-687e-4bae-97b4-4c55bb0242db}",
Persistent pseudonym. Uniquely identifies an eID user (per Idura Verify tenant)
"given_name": "ERIKA",
"family_name": "MUSTERMANN",
"birthdate": "1964-08-12",
"address": {
"street_address": "HEIDESTRAẞE 17",
"country": "D",
"locality": "KÖLN",
"postal_code": "51147",
"region": ""
},
"residence_permit_i": "RESIDENCE PERMIT 1",
"issuing_state": "D",
"document_type": "ID",
"nationality": "D",
"date_of_expiry": "2029-10-31",
"birth_name": "GABLER",
"place_of_birth": "BERLIN"
}

Test users

The Personalausweis is a physical card with an embedded chip which can be read by, for example, an NFC-enabled smartphone for use as an eID. The solution thus always requires the user to scan their physical card to authenticate with their eID. In testing you can either use a physical test card (if you have one) or a simulator.

1. Install the AusweisApp

The AusweisApp for scanning the physical Personalausweis card is available for both desktop and mobile. Download AusweisApp. Use it with a physical test card or configure it to use a simulator instead, as described below.

2. Configure the AusweisApp for testing

If you do not have a physical Personalausweis test card, configure the AusweisApp to use a simulator. When configured to use the simulator, the AusweisApp will skip the scanning step and instead always use the same hard-coded test user. Note that the simulator does not work exactly the same on desktop and mobile. For more details, see AusweisApp extended documentation for administrators and developers (PDF).

  1. Open the AusweisApp.
  2. On the Start page, click Help.
  3. On the Help page, click Information on the left.
  4. On the Information page, click the Application Version text 10 times. The AusweisApp shows a Developer options activated notification.
  5. Click Back in the top left to return to the Start page.
  6. On the Start page, click Settings.
  7. On the Settings page, click Developer options on the left.
  8. On the Developer options page:
    1. Switch on the Testmode for the self-authentication toggle.
    2. Switch on the Internal card simulator toggle.
  9. Click Back in the top left to return to the Start page.

The AusweisApp will now use the hard-coded test user for every authentication. To test it, click See my personal data on the Start page and proceed through the flow as follows:

  • Click See my personal data.
  • Click Proceed to PIN entry.

The AusweisApp should now skip the card scanning step and show the data for the test user Erika Mustermann.

You have to disable the simulator to use the AusweisApp to scan physical cards.

Integrate with Personalausweis

Data profiles for German Personalausweis

The Personalausweis has a number of data groups which contain e.g. the given name, the address or the nationality of the person authenticating. The AusweisApp will inform the user which data groups are being requested when they scan their Personalausweis.

One of the data groups is the Pseudonym, which is a service- and card-specific identifier (German: dienste- und kartenspezifisches Kennzeichen) of the user. The Pseudonym uniquely identifies the user in a privacy-preserving way and is used to generate the sub claim identifying the subject of the JWT.

Note that the Pseudonym is both service-specific and card-specific. Service-specific means that you cannot use the Pseudonym (i.e. the sub) to link users across services. Card-specific means that the Pseudonym will change when the user gets a new physical Personalausweis (e.g. due to having lost the card or changing address).

This means that you must store other data about the user if you plan to use the Personalausweis to identify users, such that you can match the identity of the user when they obtain a new physical Personalausweis.

Please refer to the German Act on Identity Cards and Electronic Identification for more details about what you are allowed to do with the data from the Personalausweis.

The data groups are bundled together into profiles which contain collections of data groups. Idura has defined some standard profiles for various use cases, and request pricing is based on these profiles.

The table below contains a description of the data groups and standard profiles.

ProfileData groupsIntended use case
PseudonymPseudonymUser login after registration
Profile 1

Pseudonym, First Name, Family Name, Religious Order / Artistic Name, Academic Title, Date of Birth, Place of Birth, Birth Name

User registration/one-time authentication
Profile 2Everything in Profile 1, plus Nationality and Address (normal place of residence)Know-your-customer (KYC)
Profile 3

Everything in Profile 2, plus Document Type, Issuing Country (always “D” for Germany), Date of Expiry and Residence Permit I

Extended KYC with document metadata

For applications configured to use a dynamic scope strategy, a profile can be selected on each request using the scope parameter prefixed with odis:, e.g. odis:Profile1. For applications configured to use a static scope strategy, you can configure the profile in the Dashboard. If nothing is configured, the profile will be Pseudonym.

It is possible to define your own profiles if you have special requirements; if you would like to do so, please contact sales.

Transaction information

You can add a reference text to display to the user while they scan the physical Personalausweis with the AusweisApp. The reference text consists of a template with a single placeholder and a dynamic parameter called txinfo. If a template is registered for the client, txinfo must be passed as a login_hint on each request. The template may be up to 118 characters long and can contain any characters. The txinfo parameter can be up to 32 characters long and can only contain alphanumeric characters (in particular, it cannot contain spaces).

Flow selection

You should usually let the end user select whether they would like to use the AusweisApp on the same device as their browser or on another device (e.g. a mobile phone). Verify will normally display a screen to let the user select which device they would like to use. You can skip this screen for a request by passing either flow:same-device or flow:another-device as a login_hint.

This can be useful in testing, and also allows you to build your own selection screen instead of using the one displayed by Verify. We do not recommend skipping the selection screen under any other circumstances, since you risk “stranding” users who would have chosen the other option.

Test authorize requests

You can use Idura’s test environment to test your integration before ordering your own client credentials (see below). The test environment has a transaction information template registered, so you must pass a txinfo parameter on every request. The template is set up such that you can for instance use your company name as the txinfo parameter.

You can use the Authorize URL builder to generate URLs for testing.

It is possible to set up your own test environment if you require custom profiles and/or a custom transaction information template. If you would like to do so, please contact support.

Order Personalausweis

To start accepting real users with Personalausweis, you need your own client credentials. The credentials consist of a client id and a client secret.

To request them, fill out the Personalausweis order form. You must have a Production domain before you submit the form. As part of the credential request, you can also register custom profiles and a transaction information template.

Processing typically takes 10-15 business days. When adesso approves your request, we receive your client credentials and install them in your Dashboard. You can then use Personalausweis to authenticate real users.