SlideShare a Scribd company logo
1 of 90
Microsoft identity platform
July 16, 2020
Community call
Decentralized Identities
Matthijs Hoekstra
Microsoft
@mahoekst
Introduction
• First things first
• Please note: We are recording this call so those unable to attend can benefit from the recording.
• This call is designed for developers who implement or are interested in implementing Microsoft identity platform
solutions.
• What kind of topics will we discuss?
• We will address development related topics submitted to us by the community for discussion.
• We build a pipeline of topics for the next few weeks, please submit your feedback and topic suggestions -
https://aka.ms/IDDevCommunityCallSurvey
• View recordings on the Microsoft 365 Developer YouTube channel - https://aka.ms/M365DevYouTube
• Follow us on Twitter @Microsoft365Dev and @azuread
• This is NOT a support channel. Please use Stack Overflow to ask your immediate support related questions.
• When is the next session?
• Community Calls: Monthly – 3rd Thursday of every month
• Next Identity Developer Community Call: Aug 20th
Your Identity == App(username, password)
u s e r n a m e
l l l l l l l lYour Identity > App(username, password)
Your Identity > App(username, password)
play
purchases
education
achievements
interests
work citizenship
u s e r n a m e
l l l l l l l l
Your Identity > App(username, password)
u s e r n a m e
l l l l l l l l
play
purchases education
achievements
interests
work citizenship
Your Identity App(username, password)
Endless breaches
of personal data
Billions spent
on audits
1B+ displaced
without any ID
?
In some cases,
disappear
• Privacy and control of
my identity and data
• Protection from hacks
• Protection from breaches
Individuals
• Trust, and Verify
• Collaborate with everyone
• Reduce risk for GDPR, KYC/AML
Organizations
• ID for cross border & agency
• Digital ID for refugees
• Social and financial inclusion
for everyone
Governments
u s e r n a m e
l l l l l l l l
play
purchases education
achievements
interests
work citizenship
u s e r n a m e
l l l l l l l l
Each of us needs digital identity we own and
control, one which securely and privately stores all
elements of our digital identity.
This self-owned identity must seamlessly integrate
into our lives and give us complete control over
how our identity data is accessed and used.
To: Alice Smith
ContosoRegistrar
5/6/2020 9:30 AM
YourDigital Student IT isavailable
CR
CR
Add to Wallet
Contoso Registrar
Wed 9:30AMYourDigitalStudentITisavailable
Hi Alice, Your digital student ID is here. Contoso
To: Alice Smith
ContosoRegistrar
5/6/2020 9:30 AM
YourDigital Student IT isavailable
CR
CR
Add to Wallet
Contoso Registrar
Wed 9:30AMYourDigitalStudentITisavailable
Hi Alice, Your digital student ID is here. Contoso
To: Alice Smith
ContosoRegistrar
5/6/2020 9:30 AM
YourDigital Student IT isavailable
CR
CR
Add to Wallet
Contoso Registrar
Wed 9:30AMYourDigitalStudentITisavailable
Hi Alice, Your digital student ID is here. Contoso
Users
Identity Hub
Universal Resolver
People,Apps,
andDevices
Stage: Working Implementations
Stage: Working Implementations
W3C Decentralized Identifiers
Stage: Published Standard
Decentralized Systems · Blockchains and Ledgers
CCG
DID Authentication
W3C Verifiable Credentials
Stage: Published Standard
User Agent
Stage: Working Implementations
did://
Join, collaborate, and contribute
Public key infrastructure
What’s an Verifiable Credential?
Configure credential issuance
Administrator
Contoso admin sets up an issuer
that will produce verifiable
credentials:
1. Provide an Azure Key Vault
2. Associate a verified
DNS domain
3. A DID is registered
Configure credential look and feel
Administrator
Contoso admin customizes
branding of their credentials.
1. Choose a card color.
2. Upload icons & images.
3. Provide helpful text.
Markup for defining look & feel of a card
{
"locale": "en-US",
"contract": "https://identity.microsoft.com/76B0B89D-4D7D...”,
"card": {
"title": "Student ID Card",
"issuedBy": "Contoso University",
"backgroundColor": "#000000",
"textColor": "#FFFFFF",
"logo": {
"uri": "https://contosouniversity.edu/studentIdCard/logo.png",
"description": “Student ID Card Logo"
},
}
"consent": {
"title": "Do you want to be issued this card...?",
"instructions": "You will need to sign into your school..."
},
"claims": {
"vc.credentialSubject.studentId": {
"type": "Number",
"label": “Student ID Number"
},
"vc.credentialSubject.expiration": {
"type": "Date",
"label": "Card Expires At"
},
"vc.credentialSubject.studentProfilePicture": {
"type": "base64Image",
"label": "Profile Picture",
"description": "A student’s profile picture"
}
}
}
{
"locale": "en-US",
"contract": "https://identity.microsoft.com/76B0B89D-4D7D...”,
"card": {
"title": "Student ID Card",
"issuedBy": "Contoso University",
"backgroundColor": "#000000",
"textColor": "#FFFFFF",
"logo": {
"uri": "https://contosouniversity.edu/studentIdCard/logo.png",
"description": “Student ID Card Logo"
},
}
"consent": {
"title": "Do you want to be issued this card...?",
"instructions": "You will need to sign into your school..."
},
"claims": {
{
"locale": "en-US",
"contract": "https://identity.microsoft.com/76B0B89D-4D7D...”,
"card": {
"title": "Student ID Card",
"issuedBy": "Contoso University",
"backgroundColor": "#000000",
"textColor": "#FFFFFF",
"logo": {
"uri": "https://contosouniversity.edu/studentIdCard/logo.png",
"description": “Student ID Card Logo"
},
}
"consent": {
"title": "Do you want to be issued this card...?",
"instructions": "You will need to sign into your school..."
},
"claims": {
"vc.credentialSubject.studentId": {
"type": "Number",
"label": “Student ID Number"
},
"vc.credentialSubject.expiration": {
"type": "Date",
"label": "Card Expires At"
},
"vc.credentialSubject.studentProfilePicture": {
"type": "base64Image",
"label": "Profile Picture",
"description": "A student’s profile picture"
}
}
}
Markup for defining look & feel of a card
Customize the look
& feel of the card
}
"consent": {
"title": "Do you want to be issued this card...?",
"instructions": "You will need to sign into your school..."
},
"claims": {
"vc.credentialSubject.studentId": {
"type": "Number",
"label": “Student ID Number"
},
"vc.credentialSubject.expiration": {
"type": "Date",
"label": "Card Expires At"
},
"vc.credentialSubject.studentProfilePicture": {
"type": "base64Image",
"label": "Profile Picture",
"description": "A student’s profile picture"
}
}
}
Markup for defining look & feel of a card
Provide text strings
for credential data
{
"locale": "en-US",
"contract": "https://identity.microsoft.com/76B0B89D-4D7D...”,
"card": {
"title": "Student ID Card",
"issuedBy": "Contoso University",
"backgroundColor": "#000000",
"textColor": "#FFFFFF",
"logo": {
"uri": "https://contosouniversity.edu/studentIdCard/logo.png",
"description": “Student ID Card Logo"
},
}
"consent": {
"title": "Do you want to be issued this card...?",
"instructions": "You will need to sign into your school..."
},
"claims": {
"vc.credentialSubject.studentId": {
"type": "Number",
"label": “Student ID Number"
},
"vc.credentialSubject.expiration": {
"type": "Date",
"label": "Card Expires At"
},
"vc.credentialSubject.studentProfilePicture": {
"type": "base64Image",
"label": "Profile Picture",
"description": "A student’s profile picture"
}
}
}
Contract describes requirements for issuance
{
"credentialIssuer": "https://portableidentitycards.azure-api...",
"issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"vc": {
"type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used by verifiers to request
},
"validityInterval": 2592000, // expiration of a credential, in seconds
"attestations": {
"selfIssued": {}, // values the user can provide directly
"presentations": {}, // credentials the user must provide
"idTokens": [ // identity providers the user must authenticate with
{
"mapping": { // define which claims should be included in credentials
"studentId": { "claim": “studentId" },
"firstName": { "claim": "given_name" },
"lastName": { "claim": "family_name" }
},
"configuration": "https://contoso.edu/.well-known/openid-configuration",
"client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7",
"redirect_uri": “https://contosouniversity.edu/verify"
}
],
},
}
{
"credentialIssuer": "https://portableidentitycards.azure-api...",
"issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"vc": {
"type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used
},
"validityInterval": 2592000, // expiration of a credential, in seconds
"attestations": {
"selfIssued": {}, // values the user can provide directly
"presentations": {}, // credentials the user must provide
"idTokens": [ // identity providers the user must authenticate with
{
"mapping": { // define which claims should be included in credentials
"studentId": { "claim": “studentId" },
"firstName": { "claim": "given_name" },
"lastName": { "claim": "family_name" }
},
"configuration": "https://contoso.edu/.well-known/openid-configuration",
"client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7",
"redirect_uri": “https://contosouniversity.edu/verify"
{
"credentialIssuer": "https://portableidentitycards.azure-api...",
"issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"vc": {
"type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used by verifiers to request
},
"validityInterval": 2592000, // expiration of a credential, in seconds
"signingKeys": [ // details of the signing keys used to issue credentials
{
"kid": "did:ion:test:EiBBk-jMkByqfJPKTSYJENy5XKRIq8p...",
"key": "https://mykeyvault12.vault.azure.net/...",
"authorization": { "method": "msi" }
}
]
"attestations": {
"selfIssued": {}, // values the user can provide directly
"presentations": {}, // credentials the user must provide
"idTokens": [ // identity providers the user must authenticate with
{
"mapping": { // define which claims should be included in credentials
"studentId": { "claim": “studentId" },
"firstName": { "claim": "given_name" },
"lastName": { "claim": "family_name" }
},
"configuration": "https://contoso.edu/.well-known/openid-configuration",
"client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7",
"redirect_uri": “https://contosouniversity.edu/verify"
}
],
},
}
Contract describes requirements for issuance
Configure properties of the issued credential
"validityInterval": 2592000, // expiration of a credential, in seconds
"signingKeys": [ // details of the signing keys used to issue credentials
{
"kid": "did:ion:test:EiBBk-jMkByqfJPKTSYJENy5XKRIq8p...",
"key": "https://mykeyvault12.vault.azure.net/...",
"authorization": { "method": "msi" }
}
]
"attestations": {
"selfIssued": {}, // values the user can provide directly
"presentations": {}, // credentials the user must provide
"idTokens": [ // identity providers the user must authenticate with
{
"mapping": { // define which claims should be included in credentials
"studentId": { "claim": “studentId" },
"firstName": { "claim": "given_name" },
"lastName": { "claim": "family_name" }
},
"configuration": "https://contoso.edu/.well-known/openid-configuration",
"client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7",
"redirect_uri": “https://contosouniversity.edu/verify"
}
],
{
"credentialIssuer": "https://portableidentitycards.azure-api...",
"issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"vc": {
"type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used by verifiers to request
},
"validityInterval": 2592000, // expiration of a credential, in seconds
"signingKeys": [ // details of the signing keys used to issue credentials
{
"kid": "did:ion:test:EiBBk-jMkByqfJPKTSYJENy5XKRIq8p...",
"key": "https://mykeyvault12.vault.azure.net/...",
"authorization": { "method": "msi" }
}
]
"attestations": {
"selfIssued": {}, // values the user can provide directly
"presentations": {}, // credentials the user must provide
"idTokens": [ // identity providers the user must authenticate with
{
"mapping": { // define which claims should be included in credentials
"studentId": { "claim": “studentId" },
"firstName": { "claim": "given_name" },
"lastName": { "claim": "family_name" }
},
"configuration": "https://contoso.edu/.well-known/openid-configuration",
"client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7",
"redirect_uri": “https://contosouniversity.edu/verify"
}
],
},
}
Contract describes requirements for issuance
Define requirements
to issue a new credential
Request issuance
Student
Request issuance
Student
Request issuance
Student
Request issuance
Student
Request issuance of a credential · OpenID request
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"response_type": "id_token",
"client_id": "https://contosouniversity.edu/presentation/request",
"redirect_uri": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"prompt": "create",
"registration" : {
"client_name": "Contoso University",
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"attestations": {
"presentations": [
{
"credentialType": "https://contosouniversity.edu/StudentIdCredential",
"contracts": ["https://credentials.msidentity.microsoft.com/.../studentId"]
}
]
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_...
"client_id": "https://contosouniversity.edu/presentation/request",
"redirect_uri": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"prompt": "create",
"registration" : {
"client_name": "Contoso University",
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"attestations": {
"presentations": [
{
"credentialType": "https://contosouniversity.edu/StudentIdCredential",
"contracts": ["https://credentials.msidentity.microsoft.com/.../studentId"]
}
]
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_...
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"response_type": "id_token",
"client_id": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"contract": "https://credentials.msidentity.microsoft.com/.../studentId"
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request issuance of a credential · OpenID request
{
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"response_type": "id_token",
"client_id": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"attestations": {
"presentations": [
{
"credentialType": "https://contosouniversity.edu/StudentIdCredential",
"contracts": ["https://credentials.msidentity.microsoft.com/.../studentId"]
}
]
}
}
.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"response_type": "id_token",
"client_id": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"contract": "https://credentials.msidentity.microsoft.com/.../studentId"
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request issuance of a credential · OpenID request
Request points to
a specific contract
"kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"response_type": "id_token",
"client_id": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"contract": "https://credentials.msidentity.microsoft.com/.../studentId"
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
"response_type": "id_token",
"client_id": "https://contosouniveristy.edu/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"contract": "https://credentials.msidentity.microsoft.com/.../studentId"
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request issuance of a credential · OpenID request
Request is signed
by the issuer
Sign in
Student
Student browses to the Contoso
U portal and installs the PIC.
1. Go to the portal
2. Scan the code
3. Authenticate
OpenID request & response to university identity provider
https://contosouniversity.edu/openid/authorize?
client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508
&redirect_uri=openid://response
&state=ajflafn3o2n651oh56161631
&response_mode=fragment
&response_type=id_token
&scope=openid
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": “fjaklnk3n153n15"
}
.
// JWT payload
{
"iss": "https://contosouniversity.edu",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"firstName": "Alice",
"lastName": "Smith"
"studentId": “21905716"
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
https://contosouniversity.edu/openid/authorize?
client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508
&redirect_uri=openid://response
&state=ajflafn3o2n651oh56161631
&response_mode=fragment
&response_type=id_token
&scope=openid
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": “fjaklnk3n153n15"
}
.
// JWT payload
{
"iss": "https://contosouniversity.edu",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
https://contosouniversity.edu/openid/authorize?
client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508
&redirect_uri=openid://response
&state=ajflafn3o2n651oh56161631
&response_mode=fragment
&response_type=id_token
&scope=openid
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": “fjaklnk3n153n15"
}
.
// JWT payload
{
"iss": "https://contosouniversity.edu",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"firstName": "Alice",
"lastName": "Smith"
"studentId": “21905716"
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
OpenID request & response to university identity provider
A standard OpenID Connect
authorize request
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": “fjaklnk3n153n15"
}
.
// JWT payload
{
"iss": "https://contosouniversity.edu",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"firstName": "Alice",
"lastName": "Smith"
"studentId": “21905716"
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
https://contosouniversity.edu/openid/authorize?
client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508
&redirect_uri=openid://response
&state=ajflafn3o2n651oh56161631
&response_mode=fragment
&response_type=id_token
&scope=openid
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": “fjaklnk3n153n15"
}
.
// JWT payload
{
"iss": "https://contosouniversity.edu",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"firstName": "Alice",
"lastName": "Smith"
"studentId": “21905716"
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
OpenID request & response to university identity provider
An id_token is returned to Authenticator
as a proof
Add a Card
Student
Add a Card
Student
Format of an issued verifiable credential
// Verifiable Credential as a JWT
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723, // The expiration of the credential
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
// Verifiable Credential as a JWT
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723, // The expiration of the credential
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
Follows W3C standard for
Decentralized Identifiers.
// Verifiable Credential as a JWT
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723, // The expiration of the credential
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
Format of an issued verifiable credential
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723, // The expiration of the credential
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
Follows W3C standard
for verifiable credentials.
// Verifiable Credential as a JWT
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723, // The expiration of the credential
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
Format of an issued verifiable credential
"exp": 1573029723, // The expiration of the credential
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
Credential is signed by issuer’s DID
// Verifiable Credential as a JWT
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723, // The expiration of the credential
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential
"credentialSubject": { // The claims in the credential
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
Format of an issued verifiable credential
Card added
Student
Verify Student ID
Bookstore
Request Permission
Bookstore
Request presentation of a credential: OpenID request
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1",
"response_type": "id_token",
"client_id": "https://bookstore.com/presentation/request",
"redirect_uri": "https://bookstore.com/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"client_name": "Fabrikam Bookstore",
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"attestations": {
"presentations": [
{ "credentialType": "https://contosouniversity.edu/StudentIdCredential" }
]
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
"client_id": "https://bookstore.com/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"attestations": {
"presentations": [
{ "credentialType": "https://contosouniversity.edu/StudentIdCredential" }
]
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1",
"response_type": "id_token",
"client_id": "https://bookstore.com/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
“attestations":
"id_token": {
"https://contosouniversity.edu/StudentIdCredential": {
"essential": "true",
"purpose": "To prove you are a student.",
}
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request presentation of a credential: OpenID request
"client_id": "https://bookstore.com/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
"attestations": {
"presentations": [
{ "credentialType": "https://contosouniversity.edu/StudentIdCredential" }
]
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request describes the requested
credentials.
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1",
"response_type": "id_token",
"client_id": "https://bookstore.com/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
“attestations":
"id_token": {
"https://contosouniversity.edu/StudentIdCredential": {
"essential": "true",
"purpose": "To prove you are a student.",
}
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request presentation of a credential: OpenID request
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
“attestations":
"id_token": {
"https://contosouniversity.edu/StudentIdCredential": {
"essential": "true",
"purpose": "To prove you are a student.",
}
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request is signed by verifier’s DID
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1"
}
.
// JWT payload
{
"iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1",
"response_type": "id_token",
"client_id": "https://bookstore.com/presentation/response",
"scope": "openid did_authn",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"response_mode" : "form_post",
"registration" : {
"jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...",
"id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ]
},
“attestations":
"id_token": {
"https://contosouniversity.edu/StudentIdCredential": {
"essential": "true",
"purpose": "To prove you are a student.",
}
}
}
.
// JWT signature
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp
8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB
1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
Request presentation of a credential: OpenID request
Approve Permission
Student
Presentation of a credential: OpenID Response
// Verifiable Credential included in presentation
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1",
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ",
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723,
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"],
"credentialSubject": {
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
// Sent via HTTP POST
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:example:subject#key-1"
}
.
// JWT payload
{
"iss": "https://self-issued.me",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"sub_jwk" : {
"crv":"secp256k1",
"kid":"did:example:subject#verikey-1",
"kty":"EC",
"x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M",
"y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o"
},
"sub": "9-aYUQ7mgL2SWQ_LNTeVN2rtw7xFP-3Y2EO9WV22cF0",
"did": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1",
"vp": "eyJhbGciOiJIUzI1NiIsI..." // Verifiable Presentation see content to the right
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
jE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY
29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd
// Sent via HTTP POST
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:example:subject#key-1"
}
.
// JWT payload
{
"iss": "https://self-issued.me",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"sub_jwk" : {
"crv":"secp256k1",
"kid":"did:example:subject#verikey-1",
"kty":"EC",
"x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M",
"y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o"
},
"sub": "9-aYUQ7mgL2SWQ_LNTeVN2rtw7xFP-3Y2EO9WV22cF0",
"did": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1",
"vp": {
"@context": [ "https://www.w3.org/2018/credentials/v1"],
"type": ["VerifiablePresentation"],
"verifiableCredential": ["eyJhbGciOiJIUzI1NiIsI..."] }
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
jE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY
29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd
// Verifiable Credential included in presentation
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1",
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ",
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723,
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"],
"credentialSubject": {
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status”
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
DID in presentation matches
subject of issued credential
"did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1"
"did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1"
// Sent via HTTP POST
// JWT header
{
"alg": "ES256K",
"typ": "JWT",
"kid": "did:example:subject#key-1"
}
.
// JWT payload
{
"iss": "https://self-issued.me",
"state": "af0ifjsldkj",
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970,
"iat": 1311280970,
"sub_jwk" : {
"crv":"secp256k1",
"kid":"did:example:subject#verikey-1",
"kty":"EC",
"x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M",
"y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o"
},
"sub": "9-aYUQ7mgL2SWQ_LNTeVN2rtw7xFP-3Y2EO9WV22cF0",
"did": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1",
"vp": {
"@context": [ "https://www.w3.org/2018/credentials/v1"],
"type": ["VerifiablePresentation"],
"verifiableCredential": ["eyJhbGciOiJIUzI1NiIsI..."] }
}
.
// JWT signature
hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
jE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY
29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd
Presentation of a credential: OpenID Response
// Verifiable Credential included in presentation
{
"alg": "RS256",
"typ": "JWT",
"kid": "did:example:issuer#keys-1"
}.
{
"sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1",
"jti": "http://contosouniversity.edu/credentials/3732",
"iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ",
"nbf": 1541493724,
"iat": 1541493724,
"exp": 1573029723,
"nonce": "660!6345FSer",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://contosouniversity.edu"
],
"type": ["VerifiableCredential", "StudentIDCredential"],
"credentialSubject": {
"studentId": "21905716"
},
"credentialStatus": {
"type": "CredentialRevocatinMechanism",
"id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status
}
}
}.
KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
Verify Permission
Bookstore
https://github.com/microsoft/VerifiableCredentials-
Verification-SDK-Typescript
https://github.com/microsoft/VerifiableCredentials-
Crypto-SDK-Typescript
https://github.com/microsoft/VerifiableCredential-
SDK-Android
Help RPs to work with
Verifiable Credentials
Validate tokens (SI, id
tokens, VCs, VPs,
Issuance and Present
SIOP)
Create SIOP requests
Supports signing
with/or without Key
Vault
Serves as a
specification for
customers using other
stacks
aka.ms/didwhitepaper
aka.ms/opendid
https://didproject.azurewebsites.net/
Microsoft 365
https://aka.ms/adaptivecardscommunitycall
https://aka.ms/microsoftgraphcall
https://aka.ms/IDDevCommunityCalendar
https://aka.ms/microsoftteamscommunitycall
https://aka.ms/officeaddinscommunitycall
https://aka.ms/powerappscommunitycall
https://aka.ms/spdev-call
https://aka.ms/spdev-sig-call
https://aka.ms/spdev-spfx-call
https://aka.ms/M365DevCalls
Recording will be available soon on our
Microsoft 365 Developer YouTube channel
https://aka.ms/M365DevYouTube
(subscribe today)
Follow us on Twitter
@Microsoft365Dev and @azuread
Next call: August 20th at 9:00am PST
https://aka.ms/IDDevCommunityCalendar
Thank you

More Related Content

Similar to Decentralized Identities-July 2020 community call

Spotlight_Biometrics_ForeignBiometricSurge
Spotlight_Biometrics_ForeignBiometricSurgeSpotlight_Biometrics_ForeignBiometricSurge
Spotlight_Biometrics_ForeignBiometricSurgeCatherine Moji Renner
 
The bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2CThe bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2CAnton Staykov
 
Computer Boot Camp Orientation Fall 2015
Computer Boot Camp Orientation Fall 2015Computer Boot Camp Orientation Fall 2015
Computer Boot Camp Orientation Fall 2015btcgrant
 
Indjic fintech module 3
Indjic fintech module 3Indjic fintech module 3
Indjic fintech module 3Drago Indjic
 
eMadrid_KatjaAssaf_DigiCred.pdf
eMadrid_KatjaAssaf_DigiCred.pdfeMadrid_KatjaAssaf_DigiCred.pdf
eMadrid_KatjaAssaf_DigiCred.pdfeMadrid network
 
Pearson Acclaim Assembled Ed Presentation
Pearson Acclaim Assembled Ed PresentationPearson Acclaim Assembled Ed Presentation
Pearson Acclaim Assembled Ed PresentationGeneralAssembly_DC
 
Identifying Users Across Platforms with a Universal ID Webinar Slides
Identifying Users Across Platforms with a Universal ID Webinar SlidesIdentifying Users Across Platforms with a Universal ID Webinar Slides
Identifying Users Across Platforms with a Universal ID Webinar SlidesLooker
 
dna-identity-crisis-cloud-web
dna-identity-crisis-cloud-webdna-identity-crisis-cloud-web
dna-identity-crisis-cloud-webRavi Venkat
 
Leveraging exponential creation of Digital Products through a Digital Platform
Leveraging exponential creation of Digital Products through a Digital PlatformLeveraging exponential creation of Digital Products through a Digital Platform
Leveraging exponential creation of Digital Products through a Digital PlatformEvandro Silvestre
 
Creditas Digital Platform: How we enabled business users to create new digita...
Creditas Digital Platform: How we enabled business users to create new digita...Creditas Digital Platform: How we enabled business users to create new digita...
Creditas Digital Platform: How we enabled business users to create new digita...Software Guru
 
Computer Boot Camp, July 1, 2014
Computer Boot Camp, July 1, 2014Computer Boot Camp, July 1, 2014
Computer Boot Camp, July 1, 2014btcgrant
 
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...Amazon Web Services
 
SharePoint, ADFS and Claims Auth
SharePoint, ADFS and Claims AuthSharePoint, ADFS and Claims Auth
SharePoint, ADFS and Claims AuthKashif Imran
 
Combine Both Clicks and Code to Build Customizable Mobile Apps
Combine Both Clicks and Code to Build Customizable Mobile AppsCombine Both Clicks and Code to Build Customizable Mobile Apps
Combine Both Clicks and Code to Build Customizable Mobile AppsSalesforce Developers
 
Cheqd: Making privacy-preserving digital credentials fun
Cheqd: Making privacy-preserving digital credentials funCheqd: Making privacy-preserving digital credentials fun
Cheqd: Making privacy-preserving digital credentials funSSIMeetup
 
Introduction to Self Sovereign Identity - IIW October 2019
Introduction to Self Sovereign Identity - IIW October 2019Introduction to Self Sovereign Identity - IIW October 2019
Introduction to Self Sovereign Identity - IIW October 2019Heather Vescent
 
Cyber Security Presentation
Cyber Security PresentationCyber Security Presentation
Cyber Security PresentationEricMendel
 
OpenID Connect 4 SSI (DIFCon F2F)
OpenID Connect 4 SSI (DIFCon F2F)OpenID Connect 4 SSI (DIFCon F2F)
OpenID Connect 4 SSI (DIFCon F2F)Torsten Lodderstedt
 

Similar to Decentralized Identities-July 2020 community call (20)

Spotlight_Biometrics_ForeignBiometricSurge
Spotlight_Biometrics_ForeignBiometricSurgeSpotlight_Biometrics_ForeignBiometricSurge
Spotlight_Biometrics_ForeignBiometricSurge
 
The bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2CThe bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2C
 
Computer Boot Camp Orientation Fall 2015
Computer Boot Camp Orientation Fall 2015Computer Boot Camp Orientation Fall 2015
Computer Boot Camp Orientation Fall 2015
 
Indjic fintech module 3
Indjic fintech module 3Indjic fintech module 3
Indjic fintech module 3
 
eMadrid_KatjaAssaf_DigiCred.pdf
eMadrid_KatjaAssaf_DigiCred.pdfeMadrid_KatjaAssaf_DigiCred.pdf
eMadrid_KatjaAssaf_DigiCred.pdf
 
Pearson Acclaim Assembled Ed Presentation
Pearson Acclaim Assembled Ed PresentationPearson Acclaim Assembled Ed Presentation
Pearson Acclaim Assembled Ed Presentation
 
Identifying Users Across Platforms with a Universal ID Webinar Slides
Identifying Users Across Platforms with a Universal ID Webinar SlidesIdentifying Users Across Platforms with a Universal ID Webinar Slides
Identifying Users Across Platforms with a Universal ID Webinar Slides
 
dna-identity-crisis-cloud-web
dna-identity-crisis-cloud-webdna-identity-crisis-cloud-web
dna-identity-crisis-cloud-web
 
Leveraging exponential creation of Digital Products through a Digital Platform
Leveraging exponential creation of Digital Products through a Digital PlatformLeveraging exponential creation of Digital Products through a Digital Platform
Leveraging exponential creation of Digital Products through a Digital Platform
 
Creditas Digital Platform: How we enabled business users to create new digita...
Creditas Digital Platform: How we enabled business users to create new digita...Creditas Digital Platform: How we enabled business users to create new digita...
Creditas Digital Platform: How we enabled business users to create new digita...
 
Badges - EULER Project
Badges - EULER ProjectBadges - EULER Project
Badges - EULER Project
 
Computer Boot Camp, July 1, 2014
Computer Boot Camp, July 1, 2014Computer Boot Camp, July 1, 2014
Computer Boot Camp, July 1, 2014
 
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
 
SharePoint, ADFS and Claims Auth
SharePoint, ADFS and Claims AuthSharePoint, ADFS and Claims Auth
SharePoint, ADFS and Claims Auth
 
Combine Both Clicks and Code to Build Customizable Mobile Apps
Combine Both Clicks and Code to Build Customizable Mobile AppsCombine Both Clicks and Code to Build Customizable Mobile Apps
Combine Both Clicks and Code to Build Customizable Mobile Apps
 
Cheqd: Making privacy-preserving digital credentials fun
Cheqd: Making privacy-preserving digital credentials funCheqd: Making privacy-preserving digital credentials fun
Cheqd: Making privacy-preserving digital credentials fun
 
Big data. Opportunità e rischi
Big data. Opportunità e rischiBig data. Opportunità e rischi
Big data. Opportunità e rischi
 
Introduction to Self Sovereign Identity - IIW October 2019
Introduction to Self Sovereign Identity - IIW October 2019Introduction to Self Sovereign Identity - IIW October 2019
Introduction to Self Sovereign Identity - IIW October 2019
 
Cyber Security Presentation
Cyber Security PresentationCyber Security Presentation
Cyber Security Presentation
 
OpenID Connect 4 SSI (DIFCon F2F)
OpenID Connect 4 SSI (DIFCon F2F)OpenID Connect 4 SSI (DIFCon F2F)
OpenID Connect 4 SSI (DIFCon F2F)
 

More from Microsoft 365 Developer

Change Notifications in Azure Event Hubs-April 2021
Change Notifications in Azure Event Hubs-April 2021Change Notifications in Azure Event Hubs-April 2021
Change Notifications in Azure Event Hubs-April 2021Microsoft 365 Developer
 
Microsoft Teams community call-August 2020
Microsoft Teams community call-August 2020Microsoft Teams community call-August 2020
Microsoft Teams community call-August 2020Microsoft 365 Developer
 
Implement Authorization in your Apps with Microsoft identity platform-June 2020
Implement Authorization in your Apps with Microsoft identity platform-June 2020Implement Authorization in your Apps with Microsoft identity platform-June 2020
Implement Authorization in your Apps with Microsoft identity platform-June 2020Microsoft 365 Developer
 
Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020Microsoft 365 Developer
 
Health team collaboration pitch deck partner
Health team collaboration pitch deck partnerHealth team collaboration pitch deck partner
Health team collaboration pitch deck partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar ansuman partner
Teams healthcare partner webinar   ansuman partnerTeams healthcare partner webinar   ansuman partner
Teams healthcare partner webinar ansuman partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar virtual visits partner
Teams healthcare partner webinar   virtual visits partnerTeams healthcare partner webinar   virtual visits partner
Teams healthcare partner webinar virtual visits partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar srini partner
Teams healthcare partner webinar   srini partnerTeams healthcare partner webinar   srini partner
Teams healthcare partner webinar srini partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar paul partner
Teams healthcare partner webinar   paul  partnerTeams healthcare partner webinar   paul  partner
Teams healthcare partner webinar paul partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar keren partner
Teams healthcare partner webinar   keren partnerTeams healthcare partner webinar   keren partner
Teams healthcare partner webinar keren partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar daniel partner
Teams healthcare partner webinar   daniel partnerTeams healthcare partner webinar   daniel partner
Teams healthcare partner webinar daniel partnerMicrosoft 365 Developer
 
Teams healthcare partner webinar andrew partner
Teams healthcare partner webinar   andrew partnerTeams healthcare partner webinar   andrew partner
Teams healthcare partner webinar andrew partnerMicrosoft 365 Developer
 
Security and compliance for healthcare pitch deck partner
Security and compliance for healthcare pitch deck partnerSecurity and compliance for healthcare pitch deck partner
Security and compliance for healthcare pitch deck partnerMicrosoft 365 Developer
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformMicrosoft 365 Developer
 
Microsoft Graph developer community call-March 2020
Microsoft Graph developer community call-March 2020Microsoft Graph developer community call-March 2020
Microsoft Graph developer community call-March 2020Microsoft 365 Developer
 

More from Microsoft 365 Developer (20)

Change Notifications in Azure Event Hubs-April 2021
Change Notifications in Azure Event Hubs-April 2021Change Notifications in Azure Event Hubs-April 2021
Change Notifications in Azure Event Hubs-April 2021
 
Power Apps community call - August 2020
Power Apps community call - August 2020Power Apps community call - August 2020
Power Apps community call - August 2020
 
Microsoft Teams community call-August 2020
Microsoft Teams community call-August 2020Microsoft Teams community call-August 2020
Microsoft Teams community call-August 2020
 
Implement Authorization in your Apps with Microsoft identity platform-June 2020
Implement Authorization in your Apps with Microsoft identity platform-June 2020Implement Authorization in your Apps with Microsoft identity platform-June 2020
Implement Authorization in your Apps with Microsoft identity platform-June 2020
 
Power Apps community call-June 2020
Power Apps community call-June 2020Power Apps community call-June 2020
Power Apps community call-June 2020
 
Office Add-ins community call-June 2020
Office Add-ins community call-June 2020Office Add-ins community call-June 2020
Office Add-ins community call-June 2020
 
Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020
 
Power Apps community call - May 2020
Power Apps community call - May 2020Power Apps community call - May 2020
Power Apps community call - May 2020
 
Health team collaboration pitch deck partner
Health team collaboration pitch deck partnerHealth team collaboration pitch deck partner
Health team collaboration pitch deck partner
 
Teams healthcare partner webinar ansuman partner
Teams healthcare partner webinar   ansuman partnerTeams healthcare partner webinar   ansuman partner
Teams healthcare partner webinar ansuman partner
 
Teams healthcare partner webinar virtual visits partner
Teams healthcare partner webinar   virtual visits partnerTeams healthcare partner webinar   virtual visits partner
Teams healthcare partner webinar virtual visits partner
 
Teams healthcare partner webinar srini partner
Teams healthcare partner webinar   srini partnerTeams healthcare partner webinar   srini partner
Teams healthcare partner webinar srini partner
 
Teams healthcare partner webinar paul partner
Teams healthcare partner webinar   paul  partnerTeams healthcare partner webinar   paul  partner
Teams healthcare partner webinar paul partner
 
Teams healthcare partner webinar keren partner
Teams healthcare partner webinar   keren partnerTeams healthcare partner webinar   keren partner
Teams healthcare partner webinar keren partner
 
Teams healthcare partner webinar daniel partner
Teams healthcare partner webinar   daniel partnerTeams healthcare partner webinar   daniel partner
Teams healthcare partner webinar daniel partner
 
Teams healthcare partner webinar andrew partner
Teams healthcare partner webinar   andrew partnerTeams healthcare partner webinar   andrew partner
Teams healthcare partner webinar andrew partner
 
Security and compliance for healthcare pitch deck partner
Security and compliance for healthcare pitch deck partnerSecurity and compliance for healthcare pitch deck partner
Security and compliance for healthcare pitch deck partner
 
Power Apps community call_April 2020
Power Apps community call_April 2020Power Apps community call_April 2020
Power Apps community call_April 2020
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platform
 
Microsoft Graph developer community call-March 2020
Microsoft Graph developer community call-March 2020Microsoft Graph developer community call-March 2020
Microsoft Graph developer community call-March 2020
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

Decentralized Identities-July 2020 community call

  • 1. Microsoft identity platform July 16, 2020 Community call Decentralized Identities Matthijs Hoekstra Microsoft @mahoekst
  • 2. Introduction • First things first • Please note: We are recording this call so those unable to attend can benefit from the recording. • This call is designed for developers who implement or are interested in implementing Microsoft identity platform solutions. • What kind of topics will we discuss? • We will address development related topics submitted to us by the community for discussion. • We build a pipeline of topics for the next few weeks, please submit your feedback and topic suggestions - https://aka.ms/IDDevCommunityCallSurvey • View recordings on the Microsoft 365 Developer YouTube channel - https://aka.ms/M365DevYouTube • Follow us on Twitter @Microsoft365Dev and @azuread • This is NOT a support channel. Please use Stack Overflow to ask your immediate support related questions. • When is the next session? • Community Calls: Monthly – 3rd Thursday of every month • Next Identity Developer Community Call: Aug 20th
  • 3.
  • 4.
  • 5. Your Identity == App(username, password)
  • 6. u s e r n a m e l l l l l l l lYour Identity > App(username, password)
  • 7. Your Identity > App(username, password) play purchases education achievements interests work citizenship u s e r n a m e l l l l l l l l
  • 8. Your Identity > App(username, password) u s e r n a m e l l l l l l l l play purchases education achievements interests work citizenship
  • 9. Your Identity App(username, password) Endless breaches of personal data Billions spent on audits 1B+ displaced without any ID ? In some cases, disappear
  • 10. • Privacy and control of my identity and data • Protection from hacks • Protection from breaches Individuals • Trust, and Verify • Collaborate with everyone • Reduce risk for GDPR, KYC/AML Organizations • ID for cross border & agency • Digital ID for refugees • Social and financial inclusion for everyone Governments
  • 11. u s e r n a m e l l l l l l l l play purchases education achievements interests work citizenship
  • 12. u s e r n a m e l l l l l l l l
  • 13. Each of us needs digital identity we own and control, one which securely and privately stores all elements of our digital identity. This self-owned identity must seamlessly integrate into our lives and give us complete control over how our identity data is accessed and used.
  • 14.
  • 15.
  • 16. To: Alice Smith ContosoRegistrar 5/6/2020 9:30 AM YourDigital Student IT isavailable CR CR Add to Wallet Contoso Registrar Wed 9:30AMYourDigitalStudentITisavailable Hi Alice, Your digital student ID is here. Contoso
  • 17. To: Alice Smith ContosoRegistrar 5/6/2020 9:30 AM YourDigital Student IT isavailable CR CR Add to Wallet Contoso Registrar Wed 9:30AMYourDigitalStudentITisavailable Hi Alice, Your digital student ID is here. Contoso
  • 18. To: Alice Smith ContosoRegistrar 5/6/2020 9:30 AM YourDigital Student IT isavailable CR CR Add to Wallet Contoso Registrar Wed 9:30AMYourDigitalStudentITisavailable Hi Alice, Your digital student ID is here. Contoso
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41. Users Identity Hub Universal Resolver People,Apps, andDevices Stage: Working Implementations Stage: Working Implementations W3C Decentralized Identifiers Stage: Published Standard Decentralized Systems · Blockchains and Ledgers CCG DID Authentication W3C Verifiable Credentials Stage: Published Standard User Agent Stage: Working Implementations did:// Join, collaborate, and contribute
  • 42.
  • 44. What’s an Verifiable Credential?
  • 45. Configure credential issuance Administrator Contoso admin sets up an issuer that will produce verifiable credentials: 1. Provide an Azure Key Vault 2. Associate a verified DNS domain 3. A DID is registered
  • 46. Configure credential look and feel Administrator Contoso admin customizes branding of their credentials. 1. Choose a card color. 2. Upload icons & images. 3. Provide helpful text.
  • 47. Markup for defining look & feel of a card { "locale": "en-US", "contract": "https://identity.microsoft.com/76B0B89D-4D7D...”, "card": { "title": "Student ID Card", "issuedBy": "Contoso University", "backgroundColor": "#000000", "textColor": "#FFFFFF", "logo": { "uri": "https://contosouniversity.edu/studentIdCard/logo.png", "description": “Student ID Card Logo" }, } "consent": { "title": "Do you want to be issued this card...?", "instructions": "You will need to sign into your school..." }, "claims": { "vc.credentialSubject.studentId": { "type": "Number", "label": “Student ID Number" }, "vc.credentialSubject.expiration": { "type": "Date", "label": "Card Expires At" }, "vc.credentialSubject.studentProfilePicture": { "type": "base64Image", "label": "Profile Picture", "description": "A student’s profile picture" } } }
  • 48. { "locale": "en-US", "contract": "https://identity.microsoft.com/76B0B89D-4D7D...”, "card": { "title": "Student ID Card", "issuedBy": "Contoso University", "backgroundColor": "#000000", "textColor": "#FFFFFF", "logo": { "uri": "https://contosouniversity.edu/studentIdCard/logo.png", "description": “Student ID Card Logo" }, } "consent": { "title": "Do you want to be issued this card...?", "instructions": "You will need to sign into your school..." }, "claims": { { "locale": "en-US", "contract": "https://identity.microsoft.com/76B0B89D-4D7D...”, "card": { "title": "Student ID Card", "issuedBy": "Contoso University", "backgroundColor": "#000000", "textColor": "#FFFFFF", "logo": { "uri": "https://contosouniversity.edu/studentIdCard/logo.png", "description": “Student ID Card Logo" }, } "consent": { "title": "Do you want to be issued this card...?", "instructions": "You will need to sign into your school..." }, "claims": { "vc.credentialSubject.studentId": { "type": "Number", "label": “Student ID Number" }, "vc.credentialSubject.expiration": { "type": "Date", "label": "Card Expires At" }, "vc.credentialSubject.studentProfilePicture": { "type": "base64Image", "label": "Profile Picture", "description": "A student’s profile picture" } } } Markup for defining look & feel of a card Customize the look & feel of the card
  • 49. } "consent": { "title": "Do you want to be issued this card...?", "instructions": "You will need to sign into your school..." }, "claims": { "vc.credentialSubject.studentId": { "type": "Number", "label": “Student ID Number" }, "vc.credentialSubject.expiration": { "type": "Date", "label": "Card Expires At" }, "vc.credentialSubject.studentProfilePicture": { "type": "base64Image", "label": "Profile Picture", "description": "A student’s profile picture" } } } Markup for defining look & feel of a card Provide text strings for credential data { "locale": "en-US", "contract": "https://identity.microsoft.com/76B0B89D-4D7D...”, "card": { "title": "Student ID Card", "issuedBy": "Contoso University", "backgroundColor": "#000000", "textColor": "#FFFFFF", "logo": { "uri": "https://contosouniversity.edu/studentIdCard/logo.png", "description": “Student ID Card Logo" }, } "consent": { "title": "Do you want to be issued this card...?", "instructions": "You will need to sign into your school..." }, "claims": { "vc.credentialSubject.studentId": { "type": "Number", "label": “Student ID Number" }, "vc.credentialSubject.expiration": { "type": "Date", "label": "Card Expires At" }, "vc.credentialSubject.studentProfilePicture": { "type": "base64Image", "label": "Profile Picture", "description": "A student’s profile picture" } } }
  • 50. Contract describes requirements for issuance { "credentialIssuer": "https://portableidentitycards.azure-api...", "issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "vc": { "type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used by verifiers to request }, "validityInterval": 2592000, // expiration of a credential, in seconds "attestations": { "selfIssued": {}, // values the user can provide directly "presentations": {}, // credentials the user must provide "idTokens": [ // identity providers the user must authenticate with { "mapping": { // define which claims should be included in credentials "studentId": { "claim": “studentId" }, "firstName": { "claim": "given_name" }, "lastName": { "claim": "family_name" } }, "configuration": "https://contoso.edu/.well-known/openid-configuration", "client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7", "redirect_uri": “https://contosouniversity.edu/verify" } ], }, }
  • 51. { "credentialIssuer": "https://portableidentitycards.azure-api...", "issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "vc": { "type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used }, "validityInterval": 2592000, // expiration of a credential, in seconds "attestations": { "selfIssued": {}, // values the user can provide directly "presentations": {}, // credentials the user must provide "idTokens": [ // identity providers the user must authenticate with { "mapping": { // define which claims should be included in credentials "studentId": { "claim": “studentId" }, "firstName": { "claim": "given_name" }, "lastName": { "claim": "family_name" } }, "configuration": "https://contoso.edu/.well-known/openid-configuration", "client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7", "redirect_uri": “https://contosouniversity.edu/verify" { "credentialIssuer": "https://portableidentitycards.azure-api...", "issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "vc": { "type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used by verifiers to request }, "validityInterval": 2592000, // expiration of a credential, in seconds "signingKeys": [ // details of the signing keys used to issue credentials { "kid": "did:ion:test:EiBBk-jMkByqfJPKTSYJENy5XKRIq8p...", "key": "https://mykeyvault12.vault.azure.net/...", "authorization": { "method": "msi" } } ] "attestations": { "selfIssued": {}, // values the user can provide directly "presentations": {}, // credentials the user must provide "idTokens": [ // identity providers the user must authenticate with { "mapping": { // define which claims should be included in credentials "studentId": { "claim": “studentId" }, "firstName": { "claim": "given_name" }, "lastName": { "claim": "family_name" } }, "configuration": "https://contoso.edu/.well-known/openid-configuration", "client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7", "redirect_uri": “https://contosouniversity.edu/verify" } ], }, } Contract describes requirements for issuance Configure properties of the issued credential
  • 52. "validityInterval": 2592000, // expiration of a credential, in seconds "signingKeys": [ // details of the signing keys used to issue credentials { "kid": "did:ion:test:EiBBk-jMkByqfJPKTSYJENy5XKRIq8p...", "key": "https://mykeyvault12.vault.azure.net/...", "authorization": { "method": "msi" } } ] "attestations": { "selfIssued": {}, // values the user can provide directly "presentations": {}, // credentials the user must provide "idTokens": [ // identity providers the user must authenticate with { "mapping": { // define which claims should be included in credentials "studentId": { "claim": “studentId" }, "firstName": { "claim": "given_name" }, "lastName": { "claim": "family_name" } }, "configuration": "https://contoso.edu/.well-known/openid-configuration", "client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7", "redirect_uri": “https://contosouniversity.edu/verify" } ], { "credentialIssuer": "https://portableidentitycards.azure-api...", "issuer": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "vc": { "type": [ "https://contosouniversity.edu/StudentIdCredential" ] // the type of the credential, used by verifiers to request }, "validityInterval": 2592000, // expiration of a credential, in seconds "signingKeys": [ // details of the signing keys used to issue credentials { "kid": "did:ion:test:EiBBk-jMkByqfJPKTSYJENy5XKRIq8p...", "key": "https://mykeyvault12.vault.azure.net/...", "authorization": { "method": "msi" } } ] "attestations": { "selfIssued": {}, // values the user can provide directly "presentations": {}, // credentials the user must provide "idTokens": [ // identity providers the user must authenticate with { "mapping": { // define which claims should be included in credentials "studentId": { "claim": “studentId" }, "firstName": { "claim": "given_name" }, "lastName": { "claim": "family_name" } }, "configuration": "https://contoso.edu/.well-known/openid-configuration", "client_id": "40be4fb5-7f3a-470b-aa37-66ed43821bd7", "redirect_uri": “https://contosouniversity.edu/verify" } ], }, } Contract describes requirements for issuance Define requirements to issue a new credential
  • 57. Request issuance of a credential · OpenID request // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1" } . // JWT payload { "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "response_type": "id_token", "client_id": "https://contosouniversity.edu/presentation/request", "redirect_uri": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "prompt": "create", "registration" : { "client_name": "Contoso University", "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "attestations": { "presentations": [ { "credentialType": "https://contosouniversity.edu/StudentIdCredential", "contracts": ["https://credentials.msidentity.microsoft.com/.../studentId"] } ] } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_...
  • 58. "client_id": "https://contosouniversity.edu/presentation/request", "redirect_uri": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "prompt": "create", "registration" : { "client_name": "Contoso University", "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "attestations": { "presentations": [ { "credentialType": "https://contosouniversity.edu/StudentIdCredential", "contracts": ["https://credentials.msidentity.microsoft.com/.../studentId"] } ] } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_... // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1" } . // JWT payload { "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "response_type": "id_token", "client_id": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "contract": "https://credentials.msidentity.microsoft.com/.../studentId" } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request issuance of a credential · OpenID request
  • 59. { "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "response_type": "id_token", "client_id": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "attestations": { "presentations": [ { "credentialType": "https://contosouniversity.edu/StudentIdCredential", "contracts": ["https://credentials.msidentity.microsoft.com/.../studentId"] } ] } } . KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1" } . // JWT payload { "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "response_type": "id_token", "client_id": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "contract": "https://credentials.msidentity.microsoft.com/.../studentId" } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request issuance of a credential · OpenID request Request points to a specific contract
  • 60. "kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1" } . // JWT payload { "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "response_type": "id_token", "client_id": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "contract": "https://credentials.msidentity.microsoft.com/.../studentId" } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#veri-key1" } . // JWT payload { "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "response_type": "id_token", "client_id": "https://contosouniveristy.edu/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "contract": "https://credentials.msidentity.microsoft.com/.../studentId" } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request issuance of a credential · OpenID request Request is signed by the issuer
  • 61. Sign in Student Student browses to the Contoso U portal and installs the PIC. 1. Go to the portal 2. Scan the code 3. Authenticate
  • 62. OpenID request & response to university identity provider https://contosouniversity.edu/openid/authorize? client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508 &redirect_uri=openid://response &state=ajflafn3o2n651oh56161631 &response_mode=fragment &response_type=id_token &scope=openid // JWT header { "alg": "ES256K", "typ": "JWT", "kid": “fjaklnk3n153n15" } . // JWT payload { "iss": "https://contosouniversity.edu", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "firstName": "Alice", "lastName": "Smith" "studentId": “21905716" } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO
  • 63. https://contosouniversity.edu/openid/authorize? client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508 &redirect_uri=openid://response &state=ajflafn3o2n651oh56161631 &response_mode=fragment &response_type=id_token &scope=openid // JWT header { "alg": "ES256K", "typ": "JWT", "kid": “fjaklnk3n153n15" } . // JWT payload { "iss": "https://contosouniversity.edu", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", https://contosouniversity.edu/openid/authorize? client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508 &redirect_uri=openid://response &state=ajflafn3o2n651oh56161631 &response_mode=fragment &response_type=id_token &scope=openid // JWT header { "alg": "ES256K", "typ": "JWT", "kid": “fjaklnk3n153n15" } . // JWT payload { "iss": "https://contosouniversity.edu", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "firstName": "Alice", "lastName": "Smith" "studentId": “21905716" } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO OpenID request & response to university identity provider A standard OpenID Connect authorize request
  • 64. // JWT header { "alg": "ES256K", "typ": "JWT", "kid": “fjaklnk3n153n15" } . // JWT payload { "iss": "https://contosouniversity.edu", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "firstName": "Alice", "lastName": "Smith" "studentId": “21905716" } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO https://contosouniversity.edu/openid/authorize? client_id=eae8b7f2-dd72-4f63-98f0-2d5399d61508 &redirect_uri=openid://response &state=ajflafn3o2n651oh56161631 &response_mode=fragment &response_type=id_token &scope=openid // JWT header { "alg": "ES256K", "typ": "JWT", "kid": “fjaklnk3n153n15" } . // JWT payload { "iss": "https://contosouniversity.edu", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "firstName": "Alice", "lastName": "Smith" "studentId": “21905716" } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO OpenID request & response to university identity provider An id_token is returned to Authenticator as a proof
  • 67. Format of an issued verifiable credential // Verifiable Credential as a JWT { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, // The expiration of the credential "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
  • 68. // Verifiable Credential as a JWT { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, // The expiration of the credential "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential Follows W3C standard for Decentralized Identifiers. // Verifiable Credential as a JWT { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, // The expiration of the credential "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... Format of an issued verifiable credential
  • 69. "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, // The expiration of the credential "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... Follows W3C standard for verifiable credentials. // Verifiable Credential as a JWT { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, // The expiration of the credential "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... Format of an issued verifiable credential
  • 70. "exp": 1573029723, // The expiration of the credential "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... Credential is signed by issuer’s DID // Verifiable Credential as a JWT { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", // The user’s DID "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", // The issuer’s DID "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, // The expiration of the credential "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], // The type of the credential "credentialSubject": { // The claims in the credential "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... Format of an issued verifiable credential
  • 74. Request presentation of a credential: OpenID request // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1" } . // JWT payload { "iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1", "response_type": "id_token", "client_id": "https://bookstore.com/presentation/request", "redirect_uri": "https://bookstore.com/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "client_name": "Fabrikam Bookstore", "jwks_uri" : "https://uniresolver.io/1.0/identifiers/did:ion:z6MkjR...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "attestations": { "presentations": [ { "credentialType": "https://contosouniversity.edu/StudentIdCredential" } ] } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq
  • 75. "client_id": "https://bookstore.com/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "attestations": { "presentations": [ { "credentialType": "https://contosouniversity.edu/StudentIdCredential" } ] } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1" } . // JWT payload { "iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1", "response_type": "id_token", "client_id": "https://bookstore.com/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, “attestations": "id_token": { "https://contosouniversity.edu/StudentIdCredential": { "essential": "true", "purpose": "To prove you are a student.", } } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request presentation of a credential: OpenID request
  • 76. "client_id": "https://bookstore.com/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, "attestations": { "presentations": [ { "credentialType": "https://contosouniversity.edu/StudentIdCredential" } ] } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request describes the requested credentials. // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1" } . // JWT payload { "iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1", "response_type": "id_token", "client_id": "https://bookstore.com/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, “attestations": "id_token": { "https://contosouniversity.edu/StudentIdCredential": { "essential": "true", "purpose": "To prove you are a student.", } } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request presentation of a credential: OpenID request
  • 77. "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, “attestations": "id_token": { "https://contosouniversity.edu/StudentIdCredential": { "essential": "true", "purpose": "To prove you are a student.", } } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request is signed by verifier’s DID // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1#veri-key1" } . // JWT payload { "iss": "did:ion:nmafdanafdaf12jkln1ln1hazhjanfu1", "response_type": "id_token", "client_id": "https://bookstore.com/presentation/response", "scope": "openid did_authn", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "response_mode" : "form_post", "registration" : { "jwks_uri" : "https://uniresolver.io/1.0/identifiers/ did:ion:nmaf...", "id_token_signed_response_alg" : [ "ES256K", "EdDSA", "RS256" ] }, “attestations": "id_token": { "https://contosouniversity.edu/StudentIdCredential": { "essential": "true", "purpose": "To prove you are a student.", } } } . // JWT signature KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp 8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB 1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdq Request presentation of a credential: OpenID request
  • 79. Presentation of a credential: OpenID Response // Verifiable Credential included in presentation { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], "credentialSubject": { "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... // Sent via HTTP POST // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:example:subject#key-1" } . // JWT payload { "iss": "https://self-issued.me", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "sub_jwk" : { "crv":"secp256k1", "kid":"did:example:subject#verikey-1", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "sub": "9-aYUQ7mgL2SWQ_LNTeVN2rtw7xFP-3Y2EO9WV22cF0", "did": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", "vp": "eyJhbGciOiJIUzI1NiIsI..." // Verifiable Presentation see content to the right } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO jE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY 29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd
  • 80. // Sent via HTTP POST // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:example:subject#key-1" } . // JWT payload { "iss": "https://self-issued.me", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "sub_jwk" : { "crv":"secp256k1", "kid":"did:example:subject#verikey-1", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "sub": "9-aYUQ7mgL2SWQ_LNTeVN2rtw7xFP-3Y2EO9WV22cF0", "did": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", "vp": { "@context": [ "https://www.w3.org/2018/credentials/v1"], "type": ["VerifiablePresentation"], "verifiableCredential": ["eyJhbGciOiJIUzI1NiIsI..."] } } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO jE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY 29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd // Verifiable Credential included in presentation { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], "credentialSubject": { "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status” } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY... DID in presentation matches subject of issued credential "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1" "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1" // Sent via HTTP POST // JWT header { "alg": "ES256K", "typ": "JWT", "kid": "did:example:subject#key-1" } . // JWT payload { "iss": "https://self-issued.me", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970, "sub_jwk" : { "crv":"secp256k1", "kid":"did:example:subject#verikey-1", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "sub": "9-aYUQ7mgL2SWQ_LNTeVN2rtw7xFP-3Y2EO9WV22cF0", "did": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", "vp": { "@context": [ "https://www.w3.org/2018/credentials/v1"], "type": ["VerifiablePresentation"], "verifiableCredential": ["eyJhbGciOiJIUzI1NiIsI..."] } } . // JWT signature hhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiO jE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY 29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd Presentation of a credential: OpenID Response // Verifiable Credential included in presentation { "alg": "RS256", "typ": "JWT", "kid": "did:example:issuer#keys-1" }. { "sub": "did:ion:njn9416416zgf1qp316n1lkjl5n1jap980h1", "jti": "http://contosouniversity.edu/credentials/3732", "iss": "did:ion:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd ", "nbf": 1541493724, "iat": 1541493724, "exp": 1573029723, "nonce": "660!6345FSer", "vc": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://contosouniversity.edu" ], "type": ["VerifiableCredential", "StudentIDCredential"], "credentialSubject": { "studentId": "21905716" }, "credentialStatus": { "type": "CredentialRevocatinMechanism", "id": "https://credentials.msidentity.microsoft.com/api/v1.0/portable/status } } }. KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTY...
  • 82.
  • 83.
  • 85. Help RPs to work with Verifiable Credentials Validate tokens (SI, id tokens, VCs, VPs, Issuance and Present SIOP) Create SIOP requests Supports signing with/or without Key Vault Serves as a specification for customers using other stacks
  • 86.
  • 87.
  • 90. Recording will be available soon on our Microsoft 365 Developer YouTube channel https://aka.ms/M365DevYouTube (subscribe today) Follow us on Twitter @Microsoft365Dev and @azuread Next call: August 20th at 9:00am PST https://aka.ms/IDDevCommunityCalendar Thank you

Editor's Notes

  1. This is all about trust and privacy Ease of use and security, fido, mfa, passwordless Don’t do much in assurance privacy, data etc. This is the next set of technologies to do this at scale. The need of trust, cross domain trust Compliance training, inside domain boundary, compliant or not compliant. 3rd party giving training giving your, every system is special, We are standardizing on protocol not API. NHS, 2 scenarios together, don’t want to use 2 stacks to complete this.. Common need is trust verification across trust boundaries. In some scenarios it might require privacy.
  2. Key points to land are lots of progress on open standards. The core parts of the scenario can now be built using published standards: Credential format: Verifiable Credentials https://www.w3.org/TR/vc-data-model/ Decentralized Identifiers https://w3c.github.io/did-core/ Authentication based on Open ID Connect (OIDC) Self-issued Open ID Provider (SIOP) https://identity.foundation/did-siop/ Credential exchange based on existing OIDC https://en.wikipedia.org/wiki/OpenID_Connect
  3. Highlights: This document is hosted at /.well-known/did-configuration Contains DID with signature
  4. Highlights: This document is hosted at /.well-known/did-configuration Contains DID with signature
  5. Highlights: This document is hosted at /.well-known/did-configuration Contains DID with signature
  6. Highlights: Card color, title, text (in bold)
  7. Highlights: Card color, title, text (in bold)
  8. Highlights: Card color, title, text (in bold)
  9. Highlihgts: Data source is the OpenID provider described in the “configuration” property Credential contents described in “mapping” section.
  10. Highlights: Card color, title, text (in bold)
  11. Highlights: Card color, title, text (in bold)
  12. Highlights: Request is signed by contoso university’s DID Request includes “contract”, which instructs Authenticator on how to get the credential
  13. Highlights: Card color, title, text (in bold)
  14. Highlights: Card color, title, text (in bold)
  15. Highlights: Card color, title, text (in bold)
  16. Highlights: This is just your typical OpenID Connect federation flow, nothing special here. Claims are returned in resulting id_token, pictured above.
  17. Highlights: This is just your typical OpenID Connect federation flow, nothing special here. Claims are returned in resulting id_token, pictured above.
  18. Highlights: This is just your typical OpenID Connect federation flow, nothing special here. Claims are returned in resulting id_token, pictured above.
  19. Highlights: Iss=Contoso University, Subject=Alice Claims are provided in “credentialSubject”, according to VC standard.
  20. Highlights: Iss=Contoso University, Subject=Alice Claims are provided in “credentialSubject”, according to VC standard.
  21. Highlights: Iss=Contoso University, Subject=Alice Claims are provided in “credentialSubject”, according to VC standard.
  22. Highlights: Iss=Contoso University, Subject=Alice Claims are provided in “credentialSubject”, according to VC standard.
  23. Card Added
  24. Allow and Deny Permission Requested Consistent
  25. Highlihgts: Request issued by Bookstore “Attestations” contains criteria for requested credentials, in this case, type=Student ID https://identity.foundation/presentation-exchange/
  26. Highlihgts: Request issued by Bookstore “Attestations” contains criteria for requested credentials, in this case, type=Student ID
  27. Highlihgts: Request issued by Bookstore “Attestations” contains criteria for requested credentials, in this case, type=Student ID
  28. Highlihgts: Request issued by Bookstore “Attestations” contains criteria for requested credentials, in this case, type=Student ID
  29. Highlights: Credential returned to bookstore in “_claim_sources” field according to OpenID standard
  30. Highlights: Credential returned to bookstore in “_claim_sources” field according to OpenID standard