PDP UMA Grant Dashboard - typical authorisation steps ┌─────┐ ┌─────────────────────┐ ┌────────────────┐ │User │ ┌─────────┐ ┌──────────┐ │Authorisation Service│ │Pension Provider│ │Agent│ │Dashboard│ │ID Service│ │ UMA-AS │ │Resource Server │ └──┬──┘ └────┬────┘ └────┬─────┘ └──────────┬──────────┘ └───────┬────────┘ │ [01] local login 'alice' │ │ │ │ │────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ [02] value pensions(alice) │ │ │ │ │────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ [03] retrieve URIs(alice) │ │ │ <───┘ │ │ │ │ │ │ │ │ ╔══════════════╧══════════════╗ │ │ │ │ ║Value first pension benefit ░║ │ │ │ │ ╚══════════════╤══════════════╝ │ │ │ │ │ │ [04] RSi/Cust/ali001/Ben/pb901?user=owner // UMAG31 │ │ │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ [05] findPAT(ali001/pb901) │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ ╔════════════════════════════════════╧══════════════════════════════════════╗ │ │ │ │ ║RO is ALICE@RS so PAT(ALICE-RS-AS) ░║ │ │ │ │ ║The RS maps external pseudonym identifer(s) for Alice and Pension Benefit ║ │ │ │ │ ║to resource IDs (with appropropriate scope - 'value'+user) ║ │ │ │ │ ║e.g. returns ALICE@RS/PB1234XYZ and resourceID=... ║ │ │ │ │ ╚════════════════════════════════════╤══════════════════════════════════════╝ │ │ │ │ │────┐ │ │ │ │ │ │ [06] determineScopes(ALICE/BENEFIT, owner) │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ [07] findRegisteredAsset(ALICE/BENEFIT) │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ [08] permission(PAT, resourceID-901, │ │ │ │ │ [value, owner]) │ │ │ │ │ // UMAFed41, 42 │ │ │ │ │<────────────────────────────────────────── │ │ │ │ │ │ │ │ [09] fail401(AS, permission1-1) │ │ │<────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ │ │ │ │ │ ╔═══════════════════╧═════════════════════════════╧═════════════════════╗ │ │ │ ║This flow shows typical authorisation steps as per PDPUMAGrant ░║ │ │ │ ║The Dashboard client will have logic to determine minimum user effort ║ │ │ │ ║based on what it knows about flow and the token(s) it has already ║ │ │ │ ╚═══════════════════╤═════════════════════════════╤═════════════════════╝ │ │ │ │ [10] authorise(permission1-1, RQP1={alice@DB, DBi, owner}, │ │ │ │ scope=[value, owner]) // UMAG331 │ │ │ │──────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ │ [11] AssessAuthzContext(permission11)│ │ │ │ <───┘ │ │ │ │ │ │ │ │ │ │ ╔════════════════════════════════════════╧═════╗ │ │ │ │ ║AS now knows resource, scopes and user=alice ░║ │ │ │ │ ║but needs assured ID at AS ║ │ │ │ │ ╚════════════════════════════════════════╤═════╝ │ │[12] fail403(need_info, permission1-2, redirect(AS/claims)) // UMAG336 │ │ │ │<──────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │[13] redirect(AS/claims, DBi, permission1-2, │ │ │ │ │DB/claimredirect) │ │ │ │ │// UMAG332 (dynamic claimsredirect) │ │ │ │ │<────────────────────────────────────────────│ │ │ │ │ │ │ │ │ │ [14] AS/claims(DBi, permission1-2, DB/claimredirect) │ │ │────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ [15] AssessAuthzContext(permission1-2) │ │ │ <───┘ │ │ │ │ │ │ │ │ │ ╔═══════════════════════════════════╗ │ │ │ │ │ ║So ask for redirect to ID Service ░║ │ │ │ │ │ ╚═══════════════════════════════════╝ │ │ [16] redirect to ID Service │ │ │ │<────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │ [17] authenticate │ │ │ │───────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ [18] unwind(USER=ALICE) │ │ │ │<─────────────────────────────────────────────────────────────────────────── │ │ │ │ │ │ │ │ │[19] unwind(USER=ALICE) │ │ │ │────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ [20] unwind 302(DB/claimredirect, permission1-3) // UMAG 333 │ │ │<────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │ [21] DB/claimredirect(permission1-3) │ │ │ │ │ // UMAG333 │ │ │ │ │────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ [22] authorise(permission1-3, RQP2={alice@DB, DBi, owner}, │ │ │ │ scope=[value, owner]) // UMAG331 │ │ │ │──────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ [23] AssessAuthzContext(permission1-3) │ │ │ <───┘ │ │ │ │ │ │ │ [24] authorised(RPT1, PCT1) // UMAG335 │ │ │ │<──────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │ │ [25] RSi/Cust/ali001/Ben/pb901?user=owner, RPT1 // UMAG34 │ │ │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ [26] introspect(RPT1) // UMAFed51 │ │ │ │ │<────────────────────────────────────────── │ │ │ │ │ │ │ │ [27] assetValues(pb901=1234)│ │ │ │<────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ │ │ │ │ │ ╔══════════════╧═══════════════╗ │ │ │ │ ║Value second pension benefit ░║ │ │ │ │ ╚══════════════╤═══════════════╝ │ │ │ │ │ │ [28] RSi/Cust/ali001/Ben/pb871?user=owner // UMAG31 │ │ │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ [29] findPAT(ali001/pb871) │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ [30] determineScopes(ALICE/BENEFIT, owner) │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ [31] findRegisteredAsset(ALICE/BENEFIT) │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ [32] permission(PAT, resourceID-871, │ │ │ │ │ [value, owner]) │ │ │ │ │ // UMAFed41, 42 │ │ │ │ │<────────────────────────────────────────── │ │ │ │ │ │ │ │ [33] fail401(AS, permission2-1) │ │ │<────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ │ │ │ │ │ │ [34] authorise(permission2-1, RQP3={alice@DB, DBi, owner}, │ │ │ │ PCT1, scope=[value, owner]) // UMAG331 │ │ │ │──────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ [35] AssessAuthzContext(permission2-1) │ │ │ <───┘ │ │ │ │ │ │ │ │ │ ╔════════════════════════════════════════╧═════╗ │ │ │ │ ║AS now knows resource, scopes and user=alice ░║ │ │ │ │ ║AND the PCT proves alice==ALICE ║ │ │ │ │ ╚════════════════════════════════════════╤═════╝ │ │ [36] authorised(RPT2) // UMAG335 │ │ │ │<──────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │ │ [37] RSi/Cust/ali001/Ben/pb901?user=owner, RPT2 // UMAG34 │ │ │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ [38] introspect(RPT2) // UMAFed51 │ │ │ │ │<────────────────────────────────────────── │ │ │ │ │ │ │ │ [39] assetValues(pb871=5678)│ │ │ │<────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ │ │ │ │ │ [40] your pensions are... │ │ │ │ │<────────────────────────────────────────────│ │ │ │ ┌──┴──┐ ┌────┴────┐ ┌────┴─────┐ ┌──────────┴──────────┐ ┌───────┴────────┐ │User │ │Dashboard│ │ID Service│ │Authorisation Service│ │Pension Provider│ │Agent│ └─────────┘ └──────────┘ │ UMA-AS │ │Resource Server │ └─────┘ └─────────────────────┘ └────────────────┘