Холболтын заавар
1.Сервис дуудах жишээ:
- Client ID - Нийтэд ил байж болно. Таны системийг таних ID дугаар.
- Client Secret Key - Нийтэд ил байж болохгүй, аюулгүй байдлыг хангаж буй цор ганц нууц түлхүүр.
- Redirect URI - OAuth серверт ирсэн хүсэлтийн хариуг тус Redirect URI хаяг руу буцаана. OAuth системд холбогдохыг хүссэн байгууллага нь тус хаягийг хүсэлт гарган солиулах боломжтой.
“OAuth” системээс иргэний мэдээллийг авах сервисүүдийг дараах өгөгдлийн бүтцийн дагуу тодорхойлно. Сервисийн мэдээллийг ХУР Төрийн мэдээлэл солилцооны системийн гарын авлага цахим хуудаснаас авна уу.
service_structure = [
{'services' : ["WS100101_getCitizenIDCardInfo", // сервис код],'wsdl' : "https://xyp.gov.mn/citizen-1.3.0/ws?WSDL", // wsdl зам// Оролтын параметргүй дуудагддаг сервис},{'services' : ["WS100201_getPropertyInfo", // сервис код],'wsdl' : "https://xyp.gov.mn/property-1.3.0/ws?WSDL", // wsdl зам'params': { // Оролтын параметртэй дуудагддаг сервис бол"WS100201_getPropertyInfo": { // сервис код'propertyNumber': 'value', // Оролтын параметрууд},}}
]
Дээрх өгөгдлийг “JSON” форматанд оруулан, үр дүнг “base64” энкод хийж хадгална. Үр дүн нь:
W3sic2VydmljZXMiOiBbIldTMTAwMTAxX2dldENpdGl6ZW5JRENhcmRJbmZvIl0sICJ3c2RsIjogImh0dHBzOi8veHlwLmdvdi5tbi9jaXRpemVuLTEuMi4wL3dzP1dTREwifSwgeyJzZXJ2aWNlcyI6IFsiV1MxMDAyMDFfZ2V0UHJvcGVydHlJbmZvIl0sICJ3c2RsIjogImh0dHBzOi8veHlwLmdvdi5tbi9wcm9wZXJ0eS0xLjIuMC93cz9XU0RMIiwgInBhcmFtcyI6IHsiV1MxMDAyMDFfZ2V0UHJvcGVydHlJbmZvIjogeyJwcm9wZXJ0eU51bWJlciI6ICJ2YWx1ZSJ9fX1d (0)
1.1 Authorization Request (HTTPS Redirect)
Доорхи хүсэлтийг “OAuth” систем рүү “HTTPS Redirect” хийнэ.
GET /oauth2/authorize?response_type=code&client_id=57d3f002bd10b2aea470dce6-72f620fd74e0ab8f8e321aa&redirect_uri=http%3A%2F%2Fbank.mndc.mn%2Fauthorized&scope=W3sic2VydmljZXMiOiBbIldTMTAwMTAxX2dldENpdGl6ZW5JRENhcmRJbmZvIl0sICJ3c2RsIjogImh0dHBzOi8veHlwLmdvdi5tbi9jaXRpemVuLTEuMi4wL3dzP1dTREwifSwgeyJzZXJ2aWNlcyI6IFsiV1MxMDAyMDFfZ2V0UHJvcGVydHlJbmZvIl0sICJ3c2RsIjogImh0dHBzOi8veHlwLmdvdi5tbi9wcm9wZXJ0eS0xLjIuMC93cz9XU0RMIiwgInBhcmFtcyI6IHsiV1MxMDAyMDFfZ2V0UHJvcGVydHlJbmZvIjogeyJwcm9wZXJ0eU51bWJlciI6ICJ2YWx1ZSJ9fX1d&state=afc7e00ab9250f59c2849bae67d90d1eb54459d8eb712c4c306bee5f287f2cb1 HTTP/1.1
Host: sso.gov.mn
Параметрийн тайлбар:
- response_type - Тогтмол "code" байна.
- client_id - "OAuth" системээс илгээсэн "Client ID".
- redirect_uri - "OAuth" системээс илгээсэн "Redirect URI".
- scope - base64_encode(json_encode(service_structure)) утга.
- state - Клиент системээс үүсгэгдсэн дахин давтагдашгүй утга. Хүсэлт бүрт өөр байна. (CSRF халдлагаас хамгаалахад хэрэглэгдэнэ.)
- login_type - "OTP", "signature", "bank" гэсэн 3 хувилбартай. Default утга нь "OTP" байна. Заавал илгээх шаардлагагүй (шинэ option).
Үүний дараа иргэнийг баталгаажуулан таних нэвтрэх хуудас буцах ба иргэн нэвтрэлтийн төрөл (Тоон гарын үсэг, SMS OTP) - ийг сонгож өөрийгөө баталгаажуулан нэвтэрнэ. “Authorization Request” нь “OAuth” серверт амжилттай шалгагдвал иргэнээс мэдээллээ өгөхийг зөвшөөрч буй эсэхийг лавлан асууна.
1.2 Access Grant Response (HTTPS Redirect)
Иргэн мэдээллээ өгөхийг зөвшөөрвөл “OAuth” сервер нэг удаагийн “grant code” үүсгэж, “state” параметрээр ирсэн утгын хамт үйлчилгээг олгогч систем рүү (HTTPS Redirect) буцаана.
HTTP/1.1 302 FOUND
Location: http://bank.mndc.mn/authorized?code=o42yXyweogXLKIhvenKxz3fwutumOX4c2z5Y9QcBR6lZqzsgRCi54MfK2eUyEPhGlwdlc99Y58MRgeuIdNFoJDE1MzM2MjY5MTkuMjk%3D&state=afc7e00ab9250f59c2849bae67d90d1eb54459d8eb712c4c306bee5f287f2cb1“Authorization Request”-ээр илгээгдсэн “state” параметрийн утга, “Access Grant Response” буцаалтаар ирж буй “state” параметрийн утга таарахгүй бол үйлчилгээг зогсоох шаардлагатай. Энэ нь халдлагын шинжтэй үйлдэл юм.
1.3. Creds And Access Grant
Системийн ерөнхий ажиллах зарчим -> (6) дугаараас хойших хүсэлт болон буцаалт нь үйлчилгээг олгогч клиент систем болон OAuth серверийн хооронд дамжих ёстойг анхаарна уу!
POST /oauth2/token HTTP/1.1
Host: sso.gov.mn
Content-Type:application/x-www-form-urlencodedgrant_type=authorization_code&code=o42yXyweogXLKIhvenKxz3fwutumOX4c2z5Y9QcBR6lZqzsgRCi54MfK2eUyEPhGlwdlc99Y58MRgeuIdNFoJDE1MzM2MjY5MTkuMjk%3D client_secret=N2JlNGFmM2NiNGRiN2RlMTE3ZmQxMjBjMGQ4OTYwOGRlNDQ2ODIxYTQ4OTcxNTY3ZjA2ZmE2ZjRjYTExNzZiYzE5YjgxMDk2NjJlMDg2N2JlN2IxY2Q0MjAyYWE0NWM4ZjE5M2Y5ZWRhOGY0NzcxZTk0NDVhOWVkMDY3NTFmM2Y%3D&redirect_uri=http%3A%2F%2Fbank.mndc.mn%2Fauthorized&client_id=57d3f002bd10b2aea470dce6-72f620fd74e0ab8f8e321aa
Параметрийн тайлбар:
- grant_type - Тогтмол “authorization_code” байна.
- code - “Access Grant Response” буцаалтаар ирсэн code параметрийн утга (grant code).
- client_id - “OAuth” системээс илгээгдсэн “Client ID”. Дэлгэрэнгүй…
- client_secret - “OAuth” системээс илгээгдсэн “Client Secret Key”. Дэлгэрэнгүй…
- redirect_uri - “OAuth” системээс илгээгдсэн “Redirect URI”. Дэлгэрэнгүй…
1.4. Access Token
“Creds And Access Grant” хүсэлтийн шалгалт амжилттай болвол “OAuth” сервер нэг удаагийн хандалтын токен үүсгэж, дараах “JSON” өгөгдлийг буцаана.
Content-Type: application/json
{
"access_token":"P0KfCOJPN2gqWbRhCm5fq6g3xUQmHSE7V02RbxePEiIQ7rJ1S64OJqDN1f4Tnclv6ffHLKjkembEMSdnK7XYYjE1MzU1MDM2MjcuNDM=",
"token_type":"Bearer",
"expires_in":60
}
Параметрийн тайлбар:
- access_token - Сервис дуудах эрх бүхий нэг удаагийн хандалтын токен.
- token_type - Хандалтын Токены төрөл (Тогтмол).
- expires_in - Хандалтын Токены хүчинтэй хугацаа.
- scope - Хандалтын Токеноор дуудагдах гэж буй сервис.
1.5. Access Token (Request Service)
GET /oauth2/api/v1/service HTTP/1.1
Host: sso.gov.mn
Authorization: Bearer P0KfCOJPN2gqWbRhCm5fq6g3xUQmHSE7V02RbxePEiIQ7rJ1S64OJqDN1f4Tnclv6ffHLKjkembEMSdnK7XYYjE1MzU1MDM2MjcuNDM=
1.6. Иргэний мэдээлэл
“OAuth” сервер хандалтын токен утгыг шалгаж амжилттай болсон тохиолдолд иргэний мэдээллийг буцаана.
HTTP/1.0 200 OK
Content-Type: application/json[
{
"citizen_loginType": 1 // Нэвтрэлтийн төрөл. 1 бол тоон гарын үсэг, 0 бол SMS OTP
},
{
"services": {
"WS100101_getCitizenIDCardInfo": {
"resultCode": 0,
"resultMessage": "\u0430\u043c\u0436\u0438\u043b\u0442\u0442\u0430\u0439",
"request": {
"regnum": "............",
},
"requestId": "315c4b56-68b5-4478-bd8c-74153f8bfa1c",
"response": {
............
............
............
............
}
}
},
"wsdl": "https://xyp.gov.mn/citizen-1.3.0/ws?WSDL"
},
{
"services": {
"WS100201_getPropertyInfo": {
"resultCode": 0,
"resultMessage": "\u0430\u043c\u0436\u0438\u043b\u0442\u0442\u0430\u0439",
"request": {
"propertyNumber": "............",
},
"requestId": "ef3caa17-7b73-4814-b5cd-f2d1e071ec93",
"response": {
............
............
............
............
}
}
},
"wsdl": "https://xyp.gov.mn/property-1.3.0/ws?WSDL"
}
]