25. အသုံးပြုသူ အထောက်အထားစစ်ဆေးခြင်း လုပ်ငန်းအဆင့်များ (User Authentication Workflows)

Fig. 25.1 ယေဘုယျ အသုံးပြုသူ လုပ်ငန်းစဉ်
25.1. HTTP(S) စနစ်တွင် အထောက်အထား စစ်ဆေးမှု (HTTP(S) authentication )
အရင်းအမြစ်များနှင့် ချိတ်ဆက်မှုအတွက် အသုံးအများဆုံးနည်းလမ်းများထဲမှ တစ်ခုမှာ web mapping servers များကဲ့သို့ HTTP(S) မှတစ်ဆင့်သွားရခြင်း ဖြစ်ပြီး အများအားဖြင့် ထိုချိတ်ဆက်မှုအမျိုးအစားများအတွက် authentication method (စစ်မှန်ကြောင်းအသိအမှတ်ပြုခြင်းနည်းလမ်း) plugin များသည် အလုပ်ဖြစ်ပါသည်။ ဤ plugin များဖြင့် HTTP request object (တောင်းဆိုမှုအရာဝတ္တု) သို့ ဝင်ရောက် ကြည့်ရှုနိုင်ပြီး တောင်းဆိုချက်သာမက ၎င်း၏ခေါင်းစီးများကိုပါ ကိုင်တွယ်နိုင်ပါသည်။ ၎င်းသည် အမျိုးမျိုးသော အင်တာနက်အခြေခံသည့် authentication ပုံစံများစွာကို ခွင့်ပြုသည်။ HTTP(S) မှတစ်ဆင့် စံ အသုံးပြုသူအမည်/စကားဝှက် authentication နည်းလမ်းအားအသုံးပြု၍ ချိတ်ဆက်သည့်အခါ ချိတ်ဆက်မှုအတွင်း HTTP BASIC authentication အား ကြိုးပမ်းမည်ဖြစ်သည်။

Fig. 25.2 HTTP BASIC အတွက် WMS ချိတ်ဆက်မှုတစ်ခုအား ပြင်ဆင်သတ်မှတ်ခြင်း
25.2. Database တွင် အထောက်အထားစစ်ဆေးခြင်း (Database authentication)
Database အရင်းအမြစ်များနှင့်ချိတ်ဆက်ထားမှုများကို အများအားဖြင့် key=value
အတွဲများအဖြစ်သိမ်းဆည်းပါသည်။ အကယ်၍ authentication configuration တစ်ခုအားအသုံးပြုနေခြင်း မဟုတ် ပါက အသုံးပြုသူအမည်များ နှင့် စကားဝှက်များကိုဖော်ထုတ်ပြသနေလိမ့်မည်။ authentication စနစ်ဖြင့် ပြင်ဆင်သတ်မှတ်လိုက်သောအခါ credential (အထောက်အထား) များကို key=value
များဖြင့် ကိုယ်စားပြုဖော်ပြမည်ဖြစ်သည်။ (ဥပမာ authfg=81t21b9
)

Fig. 25.3 Postgres SSL-with-PKI ချိတ်ဆက်မှုအား ပြင်ဆင်သတ်မှတ်ခြင်း
25.3. PKI စစ်ဆေးခြင်း (PKI authentication)
Authentication စနစ်အတွင်းရှိ PKI (Public Key Infrastructure) အစိတ်အပိုင်းများကို ပြင်ဆင်သတ်မှတ်သောအခါတွင် ရွေးချယ်စရာအနေဖြင့် component များကို database သို့ importလုပ်ခြင်း သို့မဟုတ် ဖိုင်စနစ်တွင် သိမ်းဆည်းထားသော components ဖိုင်များကို reference (အကိုးအကား) လုပ်ခြင်းတို့ရှိပါသည်။ Reference လုပ်ခြင်းသည် ထိုသို့သော component များ မကြာခဏပြောင်းလဲလျှင် အသုံးဝင်နိုင်သလို system administrator မှ component များကို အစားထိုးမည့်နေရာတွင်လည်းအသုံးဝင်နိုင်ပါသည်။ ရွေးချယ်စရာတစ်မျိုးမဟုတ်တစ်မျိုးတွင် database အတွင်းရှိ private key များသို့ ဝင်ရောက်ရန်အတွက် လိုအပ်သော စကားဝှက်ကို သိမ်းဆည်းထားရန် လိုအပ်ပါမည်။

Fig. 25.4 PKI ပြင်ဆင်သတ်မှတ်ခြင်းလုပ်ငန်းစဉ်
QGIS Options dialog (Authentication tab တွင် Manage Certificates ခလုတ်အား click နှိပ်ခြင်းဖြင့် Certificate Manager သို့ဝင်ရောက်နိုင်ပြီး ၎င်းအတွင်းရှိ သီးခြား editors များတွင် PKI component များအားလုံးကိုစီမံခန့်ခွဲနိုင်မည်ဖြစ်သည်။
) မှ
Fig. 25.5 Certificate Manager အားဖွင့်ခြင်း
Certificate Manager ထဲတွင် Identities ၊ Servers နှင့် Authorities တို့အတွက် editor (တည်းဖြတ်ပြင်ဆင်ရေးကိရိယာ) များရှိသည်။ ၎င်းတို့တစ်ခုချင်းစီအတွက် ကိုယ်ပိုင် tab များထဲတွင်ရှိပြီး အပေါ်ရှိ လုပ်ငန်းစဉ် ဇယားထဲတွင် ကြုံတွေ့ရမည့် ဝါစဉ်အတိုင်းဖော်ပြထားမည်ဖြစ်သည်။ လုပ်ငန်းစဉ်နှင့် ကျင့်သားရသွားသည်နှင့်တစ်ပြိုင်နက် မိမိအသုံးများသည့် editor များအတိုင်း tab order (ဝါစဉ်) အားစီထားပေးမည်ဖြစ်သည်။
Note
Authentication စနစ်တွင်ပြုလုပ်ထားသော အားလုံးသောပြောင်းလဲမှုများကို authentication database တွင် ချက်ချင်းသိမ်းဆည်းသောကြောင့် ပြောင်းလဲမှုမှန်သမျှအား Options dialog မှ OK ခလုတ်အား click နှိပ်၍ သိမ်းဆည်းရန် မလိုခြင်းသည် Options dialog ထဲရှိ အခြား setting များနှင့်မတူသည့် အချက်ဖြစ်သည်။
25.3.2. အထောက်အထားများ (Identities)
QGIS Options dialog ၏ Authentication tab မှ Certificate manager သို့သွား၍ Identities tab မှတစ်ဆင့် client identity အစုများ (bundles) ကိုစီမံခန့်ခွဲနိုင်သည်။ Identity တစ်ခုသည် PKI-ရရှိသော ဝန်ဆောင်မှုအတွက် အထောက်အထားရှိကြောင်းကို အတည်ပြုပေးသည့်အရာတစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့် ၎င်းတွင် client certificate တစ်ခုနှင့် private key သည် သီးခြားဖိုင်များအဖြစ် သို့မဟုတ် အစုလိုက်ဖိုင်တစ်ခုအဖြစ် ပေါင်းစပ်ပါဝင်သည်။ အစုလိုက်ဖိုင် သို့မဟုတ် private key များကို အများအားဖြင့် စကားဝှက်ဖြင့် ကာကွယ်ထားပါသည်။
Certificate Authorities (CAs) တစ်ခုကို import လုပ်ပြီးနောက် မည်သည့် identity bundle များကိုမဆို authentication database ထဲသို့ import ပြုလုပ်နိုင်ပါသည်။ အကယ်၍ identity များကိုသိမ်းဆည်းခြင်းမပြုလိုပါက authentication configuration တစ်ခုချင်းစီအတွင်းတွင် ၎င်းတို့၏ component ဖိုင်စနစ် လမ်းကြောင်းများအားရည်ညွှန်းထားနိုင်သည်။

Fig. 25.11 Identities editor
Identity bundle တစ်ခုအား import လုပ်ရာတွင် စကားဝှက်ဖြင့် ကာကွယ်ထားခြင်းဖြစ်နိုင်သကဲ့သို့ မကာကွယ်ထားခြင်းလည်းဖြစ်နိုင်ပြီး trust chain တစ်ခုအားဖွဲ့စည်းသည့် CA certificate များပါဝင်နိုင်သည်။ Trust chain certification များကို ဤနေရာတွင် import လုပ်မည်မဟုတ်ဘဲ ၎င်းတို့ကို Authorities tab ၏အောက်တွင် သီးခြားစီ ထည့်နိုင်မည်ဖြစ်သည်။
Import လုပ်ပြီးနောက် bundle ၏ certificate နှင့် private key ကို QGIS မာစတာစကားဝှက်ဖြင့် encrypt ပြုလုပ်ထားသော key ၏သိုလှောင်မှုနှင့်အတူ database တွင် သိမ်းဆည်းမည်ဖြစ်သည်။ နောက်ပိုင်းတွင် database မှ သိမ်းဆည်းထားသော bundle ကို အသုံးပြုသောအခါ မာစတာစကားဝှက်ကို ထည့်သွင်းရန်သာ လိုအပ်မည်ဖြစ်သည်။
PEM/DER (.pem/.der) နှင့် PKCS#12 (.p12/.pfx) အစိတ်အပိုင်းများပါဝင်သော တစ်ကိုယ်ရည်သုံး (personal) identity bundle များကိုထောက်ပံ့ပေးပါသည်။ အကယ်၍ key တစ်ခု သို့မဟုတ် bundle တစ်ခုအား စကားဝှက်ဖြင့်ကာကွယ်ထားပါက import မလုပ်မီ အစိတ်အပိုင်းအားအတည်ပြုရန်အတွက် စကားဝှက်လိုအပ်မည်ဖြစ်သည်။ အလားတူပင် bundle ထဲရှိ client certificate သည် မမှန်ကန်ပါက (ဥပမာအားဖြင့် ၎င်း၏ သက်တမ်းသည်အသက်မဝင်သေးလျှင် သို့မဟုတ် သက်တမ်းကျော်လွန်သွားလျှင်) bundle အား import လုပ်၍ရမည်မဟုတ်ပါ။

Fig. 25.12 PEM/DER identit ထည့်သွင်းခြင်း

Fig. 25.13 PKCS#12 identity ထည့်သွင်းခြင်း
25.4. layerအညံ့များကိုကိုင်တွယ်ခြင်း (Handling bad layers)
အခါအားလျော်စွာ project file တစ်ခုထဲရှိ သိမ်းဆည်းထားသော authentication configuration ID သည် လျော်ကန်မှုမရှိတော့သည်ကိုတွေ့ရနိုင်ပါသည်။ ဖြစ်နိုင်သည့်အကြောင်းအရင်းတစ်ခုမှာ လက်ရှိ authentication database သည် project ကိုနောက်ဆုံး သိမ်းဆည်းခဲ့စဉ်ကနှင့် မတူကွဲပြားနေသောကြောင့် သို့မဟုတ် credential များ ကွာဟနေမှုကြောင့်ဖြစ်နိုင်ပါသည်။ ထိုကဲ့သို့ ကြုံသောအခါ QGIS ကိုစတင်လိုက်သည်နှင့် Handle bad layers dialog ကိုတွေ့ရမည်ဖြစ်သည်။

Fig. 25.14 Authentication ဖြင့် ကောင်းမွန်မှုမရှိသော layer များကို ကိုင်တွယ်ခြင်း
အကယ်၍ အချက်အလက်ရင်းမြစ်တစ်ခုတွင် ၎င်းနှင့်ဆက်စပ်နေသည့် authentication configuration ID တစ်ခုရှိနေပါက ၎င်းကို တည်းဖြတ်ပြင်ဆင်နိုင်လိမ့်မည်။ ထိုသို့ပြုလုပ်ခြင်းဖြင့် data အရင်းအမြစ် string (စာသား) အား အလိုအလျောက်တည်းဖြတ်ပြင်ဆင်သွားမည်ဖြစ်သည်။ Text editor တစ်ခုထဲတွင် project file အားဖွင့်၍ string အားတည်းဖြတ်ပြင်ဆင်ခြင်းနှင့် များစွာဆင်တူသည်။

Fig. 25.15 ကောင်းမွန်မှုမရှိသော layer ၏ authentication config ID ကို တည်းဖြတ်ပြင်ဆင်ခြင်း
25.5. အထောက်အထားစီစစ်မည့် ID အားပြောင်းလဲခြင်း (Changing authentication config ID)
အခါအားလျော်စွာ အရင်းအမြစ်တစ်ခုအား ဝင်ရောက်ကြည့်ရှုခြင်းနှင့် ဆက်စပ်နေသော authentication configuration ID ကို ပြောင်းလဲရန် လိုအပ်နိုင်ပါသည်။ ထိုသို့ပြောင်းလဲခြင်းသည် အောက်ပါအခြေအနေများတွင် အသုံးဝင်နိုင်ပါသည်-
အရင်းအမြစ်၏ auth config ID သည် ဆီလျော်မှုမရှိတော့ခြင်း - Authentication database များ ပြောင်းလဲသောအခါနှင့် အရင်းအမြစ်တစ်ခုနှင့် ဆက်စပ်ထားပြီးဖြစ်သည့် ID တွင် configuration အသစ်တစ်ခုကို ချိန်ညှိ ရန် လိုအပ်သောအခါမျိုးတွင် ဤအရာဖြစ်ပွားနိုင်ပါသည်။
Project file များအားမျှဝေသုံးထားခြင်း - Project များအား မျှဝေထားသော ဖိုင်ဆာဗာမှတဆင့် အခြားအသုံးပြုသူများနှင့် မျှဝေရန် စီစဉ်ထားပါက အရင်းအမြစ်နှင့် ဆက်စပ်သော စာလုံး-၇လုံးပါသည့် ကုဒ် (a-z နှင့်/သို့မဟုတ် 0-9 တို့ပါဝင်သော) အား ကြိုတင်သတ်မှတ် နိုင်သည်။ ထို့နောက် အသုံးပြုသူတစ်ယောက်ချင်းအနေဖြင့် ၎င်းတို့၏ အရင်းအမြစ် credential များအလိုက် သီးသန့် authentication configuration ID ကို ပြောင်းလဲနိုင်သည်။ Project အားဖွင့်လိုက်သောအခါ authentication database ထဲတွင် ID အား တွေ့ရမည်ဖြစ်သော်လည်း credential များသည် အသုံးပြုသူ တစ်ဦးချင်းစီအလိုက်ကွဲပြားနိုင်ပါသည်။

Fig. 25.16 Layer တစ်ခု၏ authentication config ID အားပြောင်းလဲခြင်း (သော့ဖွင့်ထားသော အဝါရောင်စာသားအကွက်)
Warning
Auth config ID အားပြောင်းလဲခြင်းကို အဆင့်မြင့်လုပ်ငန်းစဉ်တစ်ခုအဖြစ်ယူဆပြီး ၎င်းသည် အဘယ်ကြောင့် လိုအပ်ကြောင်း အပြည့်အဝ နားလည်မှသာ လုပ်ဆောင်သင့်ပါသည်။ ထိုအတွက်ကြောင့် ID ကိုတည်းဖြတ်ပြင်ဆင်ခြင်းမပြုမီ ID ၏စာသားအကွက်ကို ဖွင့်ရန် click နှိပ်ပေးရမည့် သော့ခလောက် ခလုတ်တစ်ခုရှိနေခြင်းဖြစ်သည်။
25.6. QGIS ဆာဗာ အကူအညီ (QGIS Server support)
QGIS server တွင် မြေပုံတစ်ခုအတွက် authentication configuration များပါရှိသော layer များဖြင့် project file တစ်ခုကို အခြေခံအနေဖြင့် အသုံးပြုသောအခါ အရင်းအမြစ်များကို loading လုပ်ရန်အတွက် QGIS အတွက် ထပ်မံလိုအပ်သော setup အဆင့် နှစ်ခု ရှိပါသည်-
Authentication database အားဝင်ရောက်အသုံးပြုနိုင်ရန်လိုအပ်သည်
Authentication database ၏ မာစတာစကားဝှက် အားရရှိရန်လိုအပ်သည်
Authentication စနစ်ကို ထည့်သွင်းသောအခါ QGIS server သည် qgis-auth.db
file ကို ပွင့်လျက်ရှိသည့် user profile ထဲတွင် သို့မဟုတ် QGIS_AUTH_DB_DIR_PATH
environment variable မှသတ်မှတ်ထားသော ဖိုင်လမ်းကြောင်းတွင် ဖန်တီးပါလိမ့်မည် သို့မဟုတ် အသုံးပြုပါလိမ့်မည်။ Server ၏ အသုံးပြုသူတွင် HOME directory မရှိပါက server ၏အသုံးပြုသူမှ ဖတ်ခြင်း/ရေးသားပြင်ဆင်ခြင်း ပြုလုပ်နိုင်ပြီး web မှတစ်ဆင့် ဝင်ရောက်နိုင်သော လမ်းကြောင်းများအတွင်း မတည်ရှိသော လမ်းကြောင်း (directory) တစ်ခုကိုသတ်မှတ်ရန် environment variable ကိုအသုံးပြုပါ။
မာစတာစကားဝှက်အား server သို့ပေးရန် server လုပ်ငန်းစဉ်များအသုံးပြုသူမှဖတ်နိုင်ပြီး QGIS_AUTH_PASSWORD_FILE
environment variable အားအသုံးပြု၍သတ်မှတ်ထားသော ဖိုင်စနစ်ပေါ်ရှိလမ်းကြောင်းတစ်ခု၌ ဖိုင်၏ ပထမစာကြောင်းတွင် ၎င်းကို ရေးသားပါ။ File အား server ၏ လုပ်ငန်းစဉ်အသုံးပြုသူမှသာ ဖတ်၍ရနိုင်အောင်ကန့်သတ်ထားရန်နှင့် web မှတစ်ဆင့် ဝင်ရောက်နိုင်သော လမ်းကြောင်းများအတွင်း သိမ်းဆည်းမထားစေရန် သေချာအောင်ပြုလုပ်ပါ။
Note
အသုံးပြုပြီးနောက် QGIS_AUTH_PASSWORD_FILE
variable အား server ၏ environment မှချက်ချင်းဖယ်ရှားပစ်မည်ဖြစ်သည်။
25.7. SSL server ခြွင်းချက်များ (SSL server exceptions)

Fig. 25.17 SSL server ခြွင်းချက်
QGIS Options dialog ၏ Authentication အပိုင်းထဲရှိ Servers tab မှတစ်ဆင့် SSL server configuration များနှင့် ခြွင်းချက်များကို စီမံခန့်ခွဲနိုင်သည်။
တစ်ခါတစ်ရံ SSL server တစ်ခုအား ချိတ်ဆက်သည့်အခါ SSL”handshake” သို့မဟုတ် server ၏ certificate နှင့်ပတ်သက်သည့် ပြဿနာ များရှိတတ်ပါသည်။ ထိုပြဿနာများကို လျစ်လျူရှုနိုင်သကဲ့သို့ SSL server configuration တစ်ခုအား ခြွင်းချက်တစ်ခုအနေဖြင့်ဖန်တီးထားနိုင်သည်။ ဤအချက်သည် web browser များတွင် SSL အမှားအယွင်းများကို အစားထိုးလုပ်ဆောင်ပုံနှင့် ဆင်တူသော်လည်း ပိုမိုအကြမ်းဆန်သည့် ထိန်းချုပ်နိုင်မှုဖြင့် ရှိမည်ဖြစ်သည်။
Warning
Server နှင့် client အကြားရှိ SSL setup တစ်ခုလုံးကို အပြည့်အဝနားမလည်လျှင် SSL server configuration တစ်ခုအားမဖန်တီးသင့်ပါ။ ထိုအစား ပြဿနာကို server administrator ထံသို့ သတင်းပို့ပါ။
Note
အချို့သော PKI setup များသည် client များ၏အထောက်အထားများကိုအတည်ပြုရန် SSL server certificate အား အတည်ပြုရန်သုံးသော chain ကိုအသုံးပြုခြင်းထက် လုံးဝကွဲပြားသော CA trust chain ကိုအသုံးပြုပါသည်။ ထိုကဲ့သို့သော အခြေအနေများတွင် ချိတ်ဆက်ထားသောဆာဗာအတွက် ဖန်တီးထားသော မည်သည့် configuration မဆိုသည် client identity အတည်ပြုခြင်းဆိုင်ရာ ပြဿနာတစ်ခုကို ဖြေရှင်းနိုင်မည်မဟုတ်ဘဲ client identity အား ထုတ်ပေးသူ သို့မဟုတ် server administrator ကသာ ထိုပြဿနာအားဖြေရှင်းပေးနိုင်မည်ဖြစ်သည်။
ခလုတ်အား click နှိပ်ခြင်းဖြင့် SSL server configuration တစ်ခုအား ကြိုတင်ပြင်ဆင်သတ်မှတ်နိုင်ပါသည်။ အခြားနည်းမှာ ချိတ်ဆက်မှု တစ်ခုအတွင်း SSL အမှားအယွင်းတစ်ခုပေါ်ပေါက်လာသောအခါ configuration တစ်ခုကိုထည့်သွင်းနိုင်မည်ဖြစ်ပြီး SSL Error dialog တစ်ခုအားပြသထားမည်ဖြစ်သည် (၎င်း dialog တွင် ထိုအမှားအယွင်းအား ယာယီလျစ်လျူရှုရန် သို့မဟုတ် database ထဲသို့ သိမ်းဆည်းပြီး လျစ်လျူရှုရန် ရွေးချယ်နိုင်သည်)-

Fig. 25.18 Configuration ကို ကိုယ်တိုင်ထည့်သွင်းခြင်း

Fig. 25.19 SSL error ပေါ်ပေါက်နေစဉ်အတွင်း configuration ထည့်သွင်းခြင်း
SSL configuration တစ်ခုအား database ထဲတွင် သိမ်းဆည်းပြီးသည်နှင့် ၎င်းကို တည်းဖြတ်ပြင်ဆင်နိုင်သကဲ့သို့ ဖျက်ပစ်နိုင်ပါသည်။

Fig. 25.20 ရှိနှင့်ပြီးသား SSL configuration

Fig. 25.21 ရှိနှင့်ပြီးသား SSL configuration တစ်ခုအားတည်းဖြတ်ပြင်ဆင်ခြင်း
အကယ်၍ SSL configuration တစ်ခုအား pre-configure (ကြိုတင်ပြင်ဆင်သတ်မှတ်ခြင်း) ပြုလုပ်လိုပြီး import dialog သည် server ၏ connection အတွက် အလုပ်မလုပ်ပါက Python Console မှတစ်ဆင့်အောက်ပါ ကုဒ်အား run ၍ ချိတ်ဆက်မှုတစ်ခုကို မိမိကိုယ်တိုင် စတင်နိုင်မည်ဖြစ်သည်။ (https://bugreports.qt-project.org
အား မိမိ server ၏ URL ဖြင့်အစားထိုးရမည်)-
from qgis.PyQt.QtNetwork import QNetworkRequest
from qgis.PyQt.QtCore import QUrl
from qgis.core import QgsNetworkAccessManager
req = QNetworkRequest(QUrl('https://bugreports.qt-project.org'))
reply = QgsNetworkAccessManager.instance().get(req)
အမှားအယွင်းတစ်စုံတစ်ရာ ဖြစ်ပေါ်ပါက SSL error dialog ပေါ်လာမည်ဖြစ်ပြီး ၎င်းမှတစ်ဆင့် configuration ကို database တွင်သိမ်းဆည်းရန် ရွေးချယ်နိုင်မည်ဖြစ်သည်။