'n Produkblad beweer dat daar 'n API is, en die integrasievergadering loop vas by die tweede vraag. Watter bewerking, op watter objek, deur wie geroep, en wat geld as sukses? Om daardie vier vrae te beantwoord voordat produkte vergelyk word, skakel gewoonlik die helfte van die kandidates uit. Dit maak ook die oorblywende vergelyking iets wat 'n toets kan beslis.

Vervang die bewering dat daar 'n API is met een bewerking

Die API is 'n vervoerkanaal, nie 'n vermoe nie. 'n REST-eindpunt, 'n plaaslike sok en 'n opdragreelomhulsel kan almal 'n API genoem word, en hulle bied nie gelykwaardige bewerkings nie.

Skryf die bewerking as 'n sin neer voordat jy die dokumentasie oopmaak.

Om 'n plaaslike verbinding te begin, is 'n klientkant-aksie met 'n gebruiker voor dit. Om 'n toestelprofiel uit te reik, is 'n voorsieningsaksie met 'n inventaris agter dit. Om 'n gebruiker se toegang te deaktiveer, is 'n administratiewe aksie met 'n ouditspoor. Daardie drie woon gewoonlik in verskillende komponente, deur verskillende spanne besit, met verskillende bevoegdheid.

Vier velde wat die kontrak toetsbaar maak

Vul vier velde vir elke bewerking in: die objek, die aksie, die roeper en die suksesvoorwaarde. 'n Kontrak met 'n ontbrekende veld is 'n wens.

Die tabel is die hele werkblad:

FieldQuestionExample
ObjectWhat is being acted on?One enrolled device
ActionObserve, create, change, start, stop, or revoke?Revoke
CallerWhich identity calls it?Deployment service
SuccessWhat observable state proves it?Future sign-in denied

Die suksesvoorwaarde is die veld wat mense oorslaan, en dit is die een wat besluit of die integrasie werk. 'n Gestoorde instelling is nie 'n aktiewe tonnel nie, en 'n gedeaktiveerde rekening is nie 'n beeindigde sessie nie.

As twee bewerkings verskillende roepers nodig het, is dit twee integrasies. Om hulle in een diensrekening te bondel, beteken gewoonlik dat daar meer bevoegdheid verleen word as wat enige van die twee nodig het.

Pas die koppelvlak by sy werklike laag

OpenVPN se gemeenskaps-bestuurskoppelvlak praat met 'n daemon via TCP of 'n Unix-sok. Sy opdragte sluit waarneming van toestand en seine aan die daemon in.

Dit maak dit 'n beheerkanaal vir die daemon, nie 'n gehoste intekening-API of 'n gebruikersregistrasiediens nie. Om die dokumentasie noukeurig te lees, keer dat jy teen 'n laag bou wat nie die objek besit nie.

Daardie dokumentasie se ook dat die protokol geen eie enkripsie het nie. Enigiemand wat die sok kan bereik, kan die daemon beheer; behandel dit dus as sensitiewe beheer, nie as 'n maatstafstroom nie. Bind dit aan loopback of 'n Unix-sok, en plaas dit agter 'n beperkte reeling as 'n afstandroeper dit nodig het. Om dit gerieflikheidshalwe aan die internet bloot te stel, verander 'n beheerkanaal in 'n voorval.

Spesifiseer gedrag na die oproep

Aanvaarding is nie dieselfde as voltooiing nie. Die daemon kan terugkeer voordat die tonnel op is, so wag vir die gedokumenteerde voltooiing- of mislukkingsgebeurtenis en koppel dit terug aan die versoek wat jy gestuur het.

Besluit wat die roeper doen as die antwoord verlore gaan. Om 'n skepping of 'n herverbinding blindelings te herhaal, is nie dieselfde as om te kontroleer of die eerste versoek reeds effek gehad het nie.

Toegangsverwydering is ten minste drie verskillende aksies: blokkeer toekomstige aanmelding, beeindig 'n lewende sessie, en herroep die geloofsbrief. Vra om die een wat die beleid werklik vereis, en se in die kontrak watter een watter is. Moet nie een suksesvolle rekeningopdatering as volledige herroeping bestempel sonder bewyse nie. Die verskil maak saak tydens 'n voorval, wanneer die klok loop.

Toets die kontrak met 'n proeflopie

'n Klein goedgekeurde proeflopie moet sukses, verwerping, onderbreking en herprobeer dek, gevolg deur die toepassingsbewerking wat toegelaat of geweier behoort te word.

Vir 'n koppelvlak op daemonvlak oefen twee opdragte waarneming en 'n sein:

echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505

Verleen slegs die bevoegdheid wat die bewerking vereis. Hou geheime uit roetine-logboeke, en teken genoeg private besonderhede aan om te se watter teiken geraak is en hoe dit geeindig het.

Skryf die herstelpad neer vir die geval waar die beheer-API self af is. Kies die koppelvlak wat die objek en sy lewensiklus besit; outomatiseringsbewerings op 'n produkblad is nie 'n plaasvervanger nie.

Verwante artikels