appsettings.json: Կարգավորման ֆայլ
Բովանդակություն
- Բովանդակություն
- Ներածություն
- additionalSettings
- Autentication
- db
- Hangfire
- JwtConfig
- redisCachingSettings
- Serilog
- Storage
Ներածություն
appsettings.json-ը նախատեսված է 8X սերվիսի աշխատանքի կարգավորման պարամետրերը սահմանելու համար, ինչպիսիք են տվյալների բազայի Sql Connection-ը, լոգավորման կարգավորումները: Այստեղ ավելացվում են կարգավորումներ, որոնք պարունակում են գաղտնիք (password) կամ որոնք էականորեն փոխում են 8X սերվիսի պահվածքը։ Նման պարամետրորը նպատակահարմար չէ պահել 4X հարթակի համակարգային պարամետրերի մեջ։
Տե՛ս նաև
- All About AppSettings In ASP.NET Core
- Configuration in .NET
- Configuration in ASP.NET Core
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Azure AD-ի հետ
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Windows ADFS-ի հետ
- Սխալների լոգավորման կազմակերպում
additionalSettings
Նախկինում 8X սերվիս լոգին լինելու համար անհրաժեշտ էր միայն մուտքանուն և գաղտնաբառ, որի արդյունքում ստացվում էր JWT token, որի միջոցով օգտագործողը նույնականացվում էր և կարող էր կատարել կամայական API կանչեր։
Այժմ մտցվել է API Client-ի գաղափար, որը նախատեսված է 8X սերվիս մուտք գործող կլիենտ ծրագրի սահմանման համար։
Այն անհրաժեշտ է ստեղծել 4X կամ 8X համակարգի UI-ից “API Client-ներ” դիտելու ձևից “Ավելացնել” կոնտեքստային ֆունկցիայով՝ նշելով կլիենտի վավերականացման եղանակը (սերտիֆիկատով կամ բանալիով) և նկարագրելով Json ֆորմատի Manifest ֆայլ, որը սահմանում է կլիենտ ծրագրի իրավասությունները և սահմանափակումները (որ օգտագործողները կարող են մուտք գործել համակարգ, որ տվյալների աղբյուրներին, փաստաթղթերին, DPR-ներին կարող են դիմել ու որ API կանչերը կատարել)։
Այս հայտանիշը ավելացվել է հին լոգինի մեխանիզմը անջատելու համար։
"additionalSettings": {
"disableOldLogins": false
}
Պարամետրեր
disableOldLogins
- Լոգինի հին մեխանիզմի անջատման հայտանիշ։
Autentication
Azure AD-ով կամ Windows ADFS-ով նույնականացման կարգավորումներ։
Մանրամասների համար տե՛ս
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Azure AD-ի հետ
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Windows ADFS-ի հետ։
Այս կարգավորումները հարկավոր է լինեն նույնը 8X սերվիսի և կոնֆիգուրացիոն սերվիսի համար։
"Autentication": {
"Alternative": "AD",
"AD": {
"Authority": "https://login.microsoftonline.com/yourdomain.am",
"ClientId": "158u5wn2-2n95-14nm-22b2-9694efe14vae",
"RedirectUri": "https://yourdomain.am/b2bAdminTool",
"TokenMapping": "oid",
"ResourceID": "https://yourdomain.am/Cloud"
},
"ADFS": {
"Authority": "https://federationservername.yourdomain.am/adfs",
"ClientId": "v04c6fd-4220-14e6-n315-f147ac852c18",
"RedirectUri": "https://localhost:44322",
"TokenMapping": "sid"
}
}
Պարամետրեր
Alternative
- Սահմանում է օգտագործողի նույնականացման եղանակը՝AD
կամADFS
։AD
- Կարգավորում է Azure Active Directory-ով նույնականացման կարգավորումները։Authority
- Oգտագործողի նույնականացման համար անհրաժեշտ URL-ը։ClientId
- Ծրագրի Client ID-ն, որը գրանցված է Azure AD-ում:RedirectUri
- Նույնականացումից հետո վերահղման համար URL-ը:TokenMapping
- Նույնականացման համար անհրաժեշտ տոկենի տեսակը` OID:ResourceID
- Ծրագրի կողմից մուտքագրվող ռեսուրսի URL-ը:
ADFS
- Կարգավորում է Active Directory Federation Services (ADFS)-ով նույնականացման կարգավորումները։Authority
- Oգտագործողի նույնականացման համար անհրաժեշտ URL-ը։ClientId
- Ծրագրի Client ID-ն, որը գրանցված է ADFS-ում:RedirectUri
- Նույնականացումից հետո վերահղման համար URL-ը:TokenMapping
- Նույնականացման համար անհրաժեշտ տոկենի տեսակը` SID:
db
Այս բաժինը նախատեսված է տվյալների բազայի կարգավորումները տալու համար։
"db": {
"server": "TEST-SERVER",
"database": "test_db",
"login": "test-user",
"password": "test-password",
"readOnly" : "1",
"maxPoolSize" : 100,
"customerId": "100000",
"encrypt": false
}
Պարամետրեր
server
- Սերվերի անուն։database
- Սերվերում գտնվող տվյալների բազայի անուն։login
- Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող մուտքանունը։password
- Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող գաղտնաբառը։readOnly
- Նշում է, թե արդյոք տվյալների բազային միացումը միայն կարդալու իրավասությամբ, է թե ոչ։ Ընդունում է “0” կամ “1” արժեք։ Լռությամբ արժեքը “0” է։maxPoolSize
- Տվյալների բազային միացումների Pool-ում միացումների առավելագույն քանակը։ Լռությամբ արժեքը 100 է։customerId
- Պատվիրատուի նույնակացման համար։ Օգտագորվում է ՀԾ-Ձեռնարկության և ՀԾ-Աշխատավարձի 8X սերվիսների կողմից։encrypt
- Նշում է, թե արդյոք տվյալների բազային միացումը ծածկագրվի, թե ոչ։ Լռությամբ արժեքը false է։
Hangfire
Hangfire-ը գրադարան է, որը նախատեսված է background job-երի հերթի դրման և կատարման մեխանիզմը ապահովելու համար։
"IsHangfireServer": false
"Hangfire": {
"server": "TEST-SERVER",
"database": "test_db",
"login": "test-user",
"password": "test-password",
"workerCount": 10,
"expirationInDays": 1
}
Պարամետրեր
IsHangfireServer
- Hangfire Server-ի միացման հայտանիշ։server
- Սերվերի անունը, որտեղ գտնվում է Hangfire-ի տվյալների բազան:database
- Տվյալների բազայի անունը, որը օգտագործում է Hangfire-ը:login
- Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող մուտքանունը։password
- Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող գաղտնաբառը։workerCount
- Ֆոնային աշխատող պրոցեսների քանակը, որոնք Hangfire-ը պետք է օգտագործի առաջադրանքները մշակելու համար։expirationInDays
- Նշում է օրերի քանակը, որից հետո մշակված առաջադրանքները կհամարվեն ժամկետանց և կջնջվեն տվյալների բազայից։
JwtConfig
8X սերվիսում ծրագրային նույնականացվելուց սերվիսը տրամադրվում է JWT Token, որը օգտագործվում է API կանչերի ժամանակ նույնականությունը ստուգելու համար: Այս բաժնում սահմանված են JWT Token-ի կարգավորումները։
"JwtConfig": {
"secret": "7V{)Grmn0/12cx^TY<gnl.568",
"issuer": "test_db",
"expirationInMinutes": 1440,
"refreshExpirationInMinutes": 43200
}
Պարամետրեր
secret
- JWT Token-ի վավերականացման ու ստորագրման համար նախատեսված բանալի։issuer
- Token-ը թողարկող տվյալների բազայի անունը։expirationInMinutes
- JWT Token-ի վավերականության տևողությունը րոպեներով։refreshExpirationInMinutes
- Թարմացման Token-ի վավերականության տևողությունը րոպեներով:
redisCachingSettings
Redis-ը նախատեսված է տվյալների քեշավորման և արագ բեռնման համար։ Այս բաժնում սահմանված են Redis-ի կարգավորումները։
"redisCachingSettings": {
"enabled": false,
"connectionString": "dockerub1:6379,password=mypassword"
}
Պարամետրեր
enabled
- Redis-ով տվյալների քեշավորման միացման հայտանիշ։connectionString
- Redis սերվերին միացման Connection string-ը։ Տե՛ս Redis Connection Strings։
redisCachedItems
Այս բաժինը նախատեսված է կարգավորելու Redis սերվերում պահվող առանձին տվյալներ և պահպանման տևողությունը։
Այն ընդլայնվում է և առաձին պրոյեկտներում կարող է ավելի շատ լինել։
Օրինակ ՀԾ-Բանկի սերվիսը տալիս է OLAP կարգավորումների քեշավորման պարամետրերը։
8X հարթակում նվազագույնը առկա են հետևյալ կարգավորումները փաստաթղթի մետատվյալները, պարամետրերը և մոնիտորինգի համար անհրաժեշտ տվյալները քեշավորելու համար։
"redisCachedItems": {
"documentMetadata": {
"enabled": true,
"lifetime": "1.00:00:00"
},
"monitoring": {
"enabled": true,
"lifetime": "0.00:01:00"
},
"parameters": {
"enabled": true,
"lifetime": "1.00:00:00"
}
}
Յուրաքանչյուր բաժին պարունակում է երկու պարամետր՝
enabled
- Թույլատրված է քեշավորումը Redis-ում, թե ոչ։lifetime
- Քեշի պահպանման տևողությունը Redis-ում։ Լռությամբ արժեքը 1 օրն է։
Serilog
8X սերվիսում լոգերի հավաքագրման համար օգտագործվում է Serilog գրադարանը։ appsettings.json-ում կարգավորումների ձևը որոշվում է Serilog գրադարանի կողմից։
Լոգավորումը հնարավոր է կարգավորել այնպես, որ լոգը գրանցվի Console-ում, ֆայլում կամ Seq սերվերում։ Հնարավոր է կարգավորել, որ միաժամանակ մի քանի աղբյուրում կատարվի լոգի գրանցում։ Այդ թվում կիրառելով որոշակի ֆիլտր։
Տե՛ս նաև
MinimumLevel-ի կարգավորում
Այստեղ կարգավորվում է լոգի պահպանման մակարդակը (Information, Warning, Error, Debug, Trace)։
Օրինակ՝
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.AspNetCore": "Warning",
"Serilog.AspNetCore": "Warning"
}
}
}
Պարամետրեր
MinimumLevel:Default
- Կարգավորովում է լոգի պահպանման մակարդակը (Information, Warning, Error, Debug, Trace) ընդհանուր դեպքում։MinimumLevel:Override
- Կարգավորովում է լոգի պահպանման մակարդակը առանձին աղբյուրների համար։
Լոգի գրանցում ֆայլում
Ֆայլում գրանցումը ապահովելու համար անհրաժեշտ է Serilog
բաժնի WriteTo
ենթաբաժնում ավելացնել դրան հատուկ պարամետրերը։
"Serilog": {
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/log.json",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
}
Պարամետրեր
Name
- ԳրելովFile
նշում են, որ լոգավորումը կատարվում է ֆայլում։Args
- Գրանցման ֆայլի կարգավորումները։path
- Ֆայլի հարաբերական ճանապարհը appsettings.json ֆայլի նկատմամբ։rollingInterval
- Լոգերի գրանցման համար անհրաժեշտ նոր ֆայլի ստեղծման հաճախականությունը։ Այս օրինակում նշված է Day, որ նշանակում է, որ ամեն օրվա լոգերի համար ստեղծվում է նոր ֆայլ։formatter
- Լոգերի գրանցման ֆորմատը(JSON, XAML, …): Օրինակում նշված արժեքը առավել հարմար է լոգերի հետ հետագա աշխատանքի համար։
Լոգի գրանցում Seq սերվերում
Seq սերվերում գրանցումը ապահովելու համար անհրաժեշտ է Serilog
բաժնի WriteTo
ենթաբաժնում ավելացնել դրան հատուկ պարամետրերը։
"Serilog": {
"WriteTo": [
{
"Name": "Seq",
"Args": {
"serverUrl": "http://95.140.203.18:8443",
"bufferBaseFilename": "./logs/buffer"
}
}
]
}
Պարամետրեր
Name
- ԳրելովSeq
նշում են, որ լոգավորումը կատարվում է Seq սերվերում։Args
- Գրանցման Seq-ի կարգավորումները։serverUrl
- Seq-ի սերվերի հասցեն։bufferBaseFilename
- Սերվերի անհասանելի լինելու դեպքում լոգերի գրանցման համար անհրաժեշտ ֆայլի հարաբերական ճանապարհը appsettings.json ֆայլի նկատմամբ։ Սերվերը հասանելի դառնալուն պես ֆայլում գրանցված լոգերը գրանցվում են Seq-ում։
Լոգի ֆիլտրում
Լոգը կարելի գրանցել կիրառելով որոշ ֆիլտրեր։ Ստորև օրինակում ֆիլտրվում է ըստ լոգի ConnectedService դաշտի ‘ArCaP2P’ արժեքի և լոգավորումը պահպանում է ArCaP2P_XXXXXXXX.json անունով ֆայլում (XXXXXXXX-ի փոխարեն գրված ամսաթիվ):
"Serilog": {
"WriteTo": [
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@p['ConnectedService'] = 'ArCaP2P'"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/ArCaP2P_.json",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "1000000"
}
}
]
}
}
}
]
}
Վերև լոգի կարգավորման մեջ կարևոր են
"Name": "Logger"
- Նշում է որ բարդ լոգ է։"Filter"
- Կարգավորում է ֆիլտրը։ Տե՛ս նաև Serilog Expressions։
Մի քանի լոգերի կիրառում
Ստորև օրինակում կարգավորված են վերևի երեք լոգերը միարժամանակ։
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.AspNetCore": "Warning",
"Serilog.AspNetCore": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/log.json",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
},
{
"Name": "Seq",
"Args": {
"serverUrl": "http://95.140.203.18:8443",
"bufferBaseFilename": "./logs/buffer"
}
},
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@p['ConnectedService'] = 'ArCaP2P'"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/ArCaP2P_.json",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "1000000"
}
}
]
}
}
}
]
}
Storage
Սահմանում է ծրագրի աշխատանքի ընթացքում ստեղծվող ֆայլերի (Text reports, տպելու ձևանմուշներից առաջացած ֆայլեր, կամ այլ ֆայլեր) լոկալ պահպանման կարգավորումները։
"Storage": {
"BaseUri": "https://services8x/bank1",
"Directory": "C:\\Storage\\Files\\"
}
Պարամետրեր
BaseUri
- Սերվիսի հասցեն։ ֆայլերի ծրագրային բեռնման (կամ վերբեռնման) համար հասցեի ձևավորման համար։Directory
- Ստեղծվող ֆայլերի պահպանման հիմնական թղթապանակի ճանապարհը։