ehealth-ua / api-spec

Apache License 2.0
30 stars 24 forks source link

Проблема з Exchange oAuth Code Grant to Access Token #71

Closed vladshut closed 7 years ago

vladshut commented 7 years ago

Доброго дня!

Робимо наступний запит:

POST /oauth/tokens HTTP/1.1
Host: demo.ehealth.world
X-CSRF-Token: my-csrf-token
Content-Type: application/json
Cache-Control: no-cache

{
  "client_id": "mis-001",
  "client_secret": "mis-001-secret-key",
  "code": "299383828",
  "grant_type": "authorization_code",
  "redirect_uri": "http://example.com/",
  "scope": "capitation_contracts:view capitation_contracts:create patients:view patients:create"
}

Отримуємо відповідь з помилкою:

{
    "meta": {
        "url": "http://demo.ehealth.world/oauth/tokens",
        "type": "object",
        "request_id": "qodrqnug69i0i28hbhbj6vu9m3ie91re",
        "code": 400
    },
    "error": {
        "type": "request_malformed",
        "message": "Malformed request. Probably, you have sent corrupted JSON.",
        "invalid": [
            {
                "rules": [
                    {
                        "rule": "json"
                    }
                ],
                "entry_type": "request"
            }
        ]
    }
}

Підкажіть, будь ласка, в чому може бути помилка?

AlekzandrV commented 7 years ago

Доброго дня. Проблема швидше за все в описі методу (виправимо)

Спробуйте так:

{
  "token": {
    "client_id": "mis-001",
    "client_secret": "mis-001-secret-key",
    "code": "299383828",
    "grant_type": "authorization_code",
    "redirect_uri": "http://example.com/",
    "scope": "capitation_contracts:view capitation_contracts:create patients:view patients:create"
  }
}

Проте бачу що передаєте не зовсім корректний набір скоупів. На що орієнтувалися при заповненні саме цих? capitation_contracts:view capitation_contracts:create patients:view patients:create

vladshut commented 7 years ago

Дякую! Тіло запиту (зі скоупами) взяли з прикладу звідси http://docs.ehealthapi1.apiary.io/#reference/public.-medical-service-provider-integration-layer/oauth/exchange-oauth-code-grant-to-access-token

vladshut commented 7 years ago

Тепер маємо наступну проблему.

Надсилаємо запит:

{
   "token":{
      "client_id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e",
      "client_secret":"UmE0L0d4d2NpZ2MyQnVOdDVleXBDQT0",
      "code":"Ym1UNElxemh1ZzFOaDlDdmdJVUplQT09",
      "grant_type":"authorization_code",
      "redirect_uri":"http:\/\/eclinic.loc\/cabinet\/ehealth\/auth",
      "scope":"legal_entity:read"
   }
}

Отримуємо відповідь з помилкою:

{
   "meta":{
      "url":"http://demo.ehealth.world/oauth/tokens",
      "type":"object",
      "request_id":"m7hka7odlno57aetbqg1fvkp01m563tu",
      "code":401
   },
   "error":{
      "invalid_client":"Invalid client id or secret."
   }
}

client_id та client_secret були взяті з відповіді на запит створення legal_entity

Access token для запиту на створення legal entity було взято 68325CEB-84FA-4217-A544-40FC38837911 з файлу: https://docs.google.com/document/d/1pi40OZQ3ajKHmXHFHApoJiVRLLgx4iJVl8bNi93qzW8/edit

Відповідь при створенні legal_entity :

{
 "urgent":{
   "security":{
     "redirect_uri":"http://eclinic.loc/cabinet/ehealth/auth",
     "client_secret":"UmE0L0d4d2NpZ2MyQnVOdDVleXBDQT09",
     "client_id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e"
   },
   "employee_request_id":"191826d5-0de0-4481-bebd-434d7076ff69"
 },
 "meta":{
   "url":"http://demo.ehealth.world/api/legal_entities",
   "type":"object",
   "request_id":"oq5stqulbb118daou8qcsu954goc0amf",
   "code":200
 },
 "data":{
   "updated_by":"0c997c53-3292-4d30-a5b0-8d5c9a064e68",
   "updated_at":"2017-07-21T11:47:09.457438",
   "type":"MSP",
   "status":"ACTIVE",
   "short_name":"Комунальна 4-та міська поліклініка м. Львова  (Сихів)",
   "public_name":"Комунальна 4-та міська поліклініка м. Львова  (Сихів)",
   "phones":[
     {
       "type":"MOBILE",
       "number":"+380678024810"
     }],
   "owner_property_type":"PRIVATE",
   "nhs_verified":true,
   "name":"Комунальна 4-та міська поліклініка м. Львова  (Сихів)",
   "mis_verified":"NOT_VERIFIED",
   "medical_service_provider":{
     "licenses":[
       {
         "what_licensed":"Тест",
         "license_number":"12345",
         "issued_date":"2017-01-01",
         "issued_by":"Тест",
         "expiry_date":"2017-01-31",
         "active_from_date":"2017-01-01"
       }],
     "accreditation":null
   },
   "legal_form":"995",
   "kveds":[
     "86.21"],
   "is_active":true,
   "inserted_by":"ca5a94eb-ff85-46d4-abd7-1ca95a911f40",
   "inserted_at":"2017-06-16T06:53:41.811318",
   "id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e",
   "email":"vladyslav.shut@gmail.com",
   "edrpou":"38782323",
   "created_by_mis_client_id":"f5e6a307-7c26-404a-8134-b0ea3690152d",
   "addresses":[
     {
       "zip":"41600",
       "type":"REGISTRATION",
       "street_type":"STREET",
       "street":"Шевченко",
       "settlement_type":"CITY",
       "settlement_id":"90cf1df9-7306-424d-98b0-18f03098f9bd",
       "settlement":"Вінниця",
       "country":"UA",
       "building":"12",
       "area":"Вінницька"
     }]
 }
}

Також є питання: чому "id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e", співпадає з "client_id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e"?

І що значить поле "created_by_mis_client_id":"f5e6a307-7c26-404a-8134-b0ea3690152d" ? Якщо це id MIS, то чому тоді цей ІД не співпадає з ІД для взятого Access token?

Дякую.

vladshut commented 7 years ago

@AlekzandrV ?

AlekzandrV commented 7 years ago

@vladshut Доброго дня. Перепрошую за очікування. Бачу що через 17 хв після Вашого запиту були ще запити на створення/оновлення інформації, які змінили redirect_uri на example2.com. Проте зараз зовсім інший redirect_uri. Всі використовують один і той самий тестовий сертифікат.

Що стосується співпадіння "id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e" та "client_id":"786d84d9-e1c5-4d58-9f0f-f5f3d826b26e" - то так і є, ід облікового запису юридичної особи та клієнта співпадають

AlekzandrV commented 7 years ago

І що значить поле "created_by_mis_client_id":"f5e6a307-7c26-404a-8134-b0ea3690152d" ?

В даному полі фіксується лише ІД МІСа який створив Юр.особу. Зміни по Юр.особі в даному полі не відображаються. Проте все реквести логуються

lymychp commented 7 years ago

can we close this ticket?