Диаграмма определяет, как клиентское приложение может получить согласие пользователя на доступ к его счетам и затем использовать полученный токен доступа для запроса информации о счете в соответствии с FAPI-2,
Клиентское приложение отправляет параметры запроса авторизации к PAR Endpoint через защищенное соединение TLS.
Запрос:
POST /par HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer <signed_jwt>
client_id=client123
&request=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Ответ:
{
"request_uri": "urn:example:request_uri:123",
"expires_in": 60
}
request_uri
через TLSПользователь перенаправляется на авторизацию с request_uri
через защищенное соединение TLS.
Запрос:
GET /authorize?client_id=client123&request_uri=urn:example:request_uri:123&response_type=code&scope=openid%20profile%20accounts HTTP/1.1
Host: auth.example.com
Пользователь предоставляет согласие на доступ к счету.
Пользовательский интерфейс:
css
[Приложение запрашивает доступ к следующим данным: - Информация о счетах - Транзакции]
[Разрешить] [Отклонить]
После предоставления согласия пользователь перенаправляется обратно на клиентское приложение с авторизационным кодом.
Ответ:
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=authcode123&state=xyz
Клиентское приложение использует авторизационный код и private_key_jwt для получения токена доступа и ID-токена.
Запрос:
POST /token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded
DPoP: <signed_dpop_jwt>
grant_type=authorization_code
&code=authcode123
&redirect_uri=https://client.example.com/cb
&client_id=client123
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Ответ:
{
"access_token": "access_token_abc123",
"id_token": "id_token_xyz456",
"token_type": "Bearer",
"expires_in": 3600,
"dpop_proof": "dpop_jwt"
}
Клиентское приложение использует токен доступа для запроса информации о счете через защищенное соединение TLS.
Запрос:
GET /accounts HTTP/1.1
Host: api.bank.com
Authorization: Bearer access_token_abc123
DPoP: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Ответ:
{
"accounts": [
{
"account_id": "12345",
"balance": 1000.50,
"currency": "USD",
"account_type": "savings"
},
{
"account_id": "67890",
"balance": 2500.75,
"currency": "USD",
"account_type": "checking"
}
]
}
RFC 9126 OAuth 2.0 Pushed Authorization Requests - https://www.rfc-editor.org/rfc/rfc9126.html
OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP) - https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-11.html