Sinuna persistentId + app security refactor#64
Conversation
|
Helpoin tapa testailuun lokaalissa on:
korvaa <idToken> kyseisellä auth-tavan tokenilla Elikkäs:
Käytännössä users-apiin voi luoda käyttäjiä api-kutsuilla tai sit vaikka virtual-finland sovelluksilla (jos ajaa vfd-toolssilla |
|
Jätän tämän nyt tähän, keskeneräisenä/draftina: en kerennyt pidemmälle miettimään kun kävi niin että olin jo järvessä ja juhannuksen vietossa. EDIT: no laittelen kuitenni avoimeksi kun teknisesti näyttäisi toimivan. Tässä PR:ssä olennaisin asia on vain toi sinunan persistent_id-muutos joka toteutuksena löytyy ekasta kommitista: Toissijaista on refaktorointi ja sit featti että Tosiaan hieman pikaisesti raavittu kasaan tämä eli mun puolesta saapi tätä vaikka kehitellä eteenpäin, kokonaan uudelleenkirjoittaa, hyväksyä sellaisenaan tai jättää huomiotta. Käytännössä mitkä vain kommentit helpottaa kun jos tätä vilkaisee uusiksi syssymmällä. |
|
Jotain havaintoja kun tätä disablointia/enablointia testasi lokaalissa: SuomiFI token ei kelpaa riippumatta siitä oliko enabled vai ei. Tarina ei tosin tarkenna pitikö toimiakaan ja oleellisinta varmaan tässä vaiheessa, että SInuna ja Testbed pelittää, jotka kyllä pelittivätkin (enablointi ja disablointi). 👍 e: näyttäisi koodin perusteella, että tuki myös SuomiFi:lle pitäisi olla - lienee jossain muualla vika kun tuossa enabloinnissa. e2: virheen jonka heittää on 401: Access denied, vs. 401 Invalid token |
|
Näissä Security/Features luokissa on jonkun verran saman toistoa (BuildAuthentication, BuildAuthorization, GetSecurityPolicySchemeName) - voisko näille luoda vaikka jonkun abstraktin luokan mistä nämä metodit voisi inherittaa, että ois ns. enemmän DRY. Abstrakti luokka tuli ekana mieleen, en tosin tiedä oisko se tälläsessä oikea patterni ja onko syystäkin kuitekin samat metodit joka luokassa toistettuna. 🤔 |
lassipatanen
left a comment
There was a problem hiding this comment.
Näyttää ihan toimivalta ratkaisulta. Varmaan jos haluaisi tehdä enemmän .net tyylillä, niin konfiguroisi nuo palikat service collection extension luokissa minne voi vaikka passata optionseja, mutta eipä se toimintaa muuta ja on toistaalta vähän turhaa ajan käyttöä. Sitten jos katsoo vielä että koodi on yksikkötestattavaa niin olisi varmaan ihan jees.
Vähän hahmottelin tuonne shared repoon miten tuota voisi toteuttaa extension metodeilla, mutta ei siitä mitenkään valmista tullut.
| public static string TestBedBearerScheme => "DefaultTestBedBearerScheme"; | ||
| public static string SuomiFiBearerScheme => "SuomiFiBearerScheme"; | ||
| public static string SinunaScheme => "SinunaScheme"; | ||
| public static string AllPoliciesPolicy => "AllPolicies"; |
There was a problem hiding this comment.
Tätä ei käytetä missään
| public string GetSecurityPolicyScheme() | ||
| { | ||
| throw new NotImplementedException(); | ||
| } |
|
|
||
| namespace VirtualFinland.UserAPI.Security.Features; | ||
|
|
||
| public class SuomiFiSecurityFeature : ISecurityFeature |
There was a problem hiding this comment.
Ehkä suomi fi kirjautumiseen liittyvät koodit voisi vain poistaa, kun ei niillä taida olla mitään käyttöä, ja jos taas joskus pitää saada ne mukaan niin vnahoista koodeista varmaan selviää miten se pitää konffata.
There was a problem hiding this comment.
Näin voisi olla juu, ehkä pittääpi tehdä siitä taski erikseen.
Ah-so, sori tähän taisi liittyä virheelliset ohjeet suomifi:n kohdalta: kun ajaa users-api:a local-stagessa niin ei kelpaa dev-stagen suomifi-tunniste vaan se vaatisi local-stagen suomifitokenia. Sen saisi haettua siten että lokaalissa (vfd-toolssilla) Mutta joo tuon nyt voinee jättää huomiotta kun ei ole suomifi-toteutusta tulossa käyttöön. |
Toi esimerkki näyttää oivalta👍. Pitääpä reworkkia tätä hieman lomalta palaneiden silmien (🔥🔥) kanssa! EDIT: hieman reworkkia tässä kohti tapahtunut! |
Tehty:
ResolveTokenUserId()Security.<auth>.IsEnabled.appsettings.json= default,appsettings.<stage>.json= overridesApplicationSecurityISecurityFeatureEi tehty, mutta olisi hyvä jossain kohti tehdä:
SinunaSecurityFeature.LoadOpenIdConfigUrl()) ennen kuin käsitellään ensimmäistäkään authorize-kyselyä, tai sitten toisena (parempana) vaihtiksena että se kysely odottaa jos initialize-tila on vielä kesken