X509 Certifikater med private keys – oauth2 autorisation

For at kunne vise statistik fra en google analytics account direkte på et website, har jeg haft brug for at kunne autorisere et X509 certifikat via oauth2 op imod Google.

På googles developer site er der en masse forskellige eksempler, dog meget få i C# (som jeg skulle bruge i det pågældende tilfælde), og endnu færre, der autoriserer via en downloadet key, i stedet for med en popup autorization. Faktisk så få, at det ikke lykkedes mig at finde dem.

 

Derfor var min glæde stor, da jeg i en google group endeligt fandt et eksempel. Jeg copy-pastede koden ind i et test website, og alt var godt. Eksemplet virkede, og jeg kunne trække data ud fra Analytics. Der var nogle ting, der lige skulle gennemskues i de parametre, der skal sendes til Analytics, men intet, der ikke kunne løses. Så en lettere omskrevet version af koden blev lagt ind i det kode, jeg arbejdede med.

Og så stoppede det med at virke.

Forskellige versioner af CryptographicException – først en internal server error (det siger jo ikke særligt meget) og senere en Access Denied (lidt mere sigende). I alle tilfælde var det nedenstående linie, der gav fejlen.

I de eksempler, jeg allerede havde kørende med X509Certikater i det pågældende site var der ingen problemer, og som sagt heller ikke med denne linie i test websitet. Men så snart det skulle køres i den rigtige Visual Studio Solution, så virkede det ikke.

At det havde noget at gøre med access og rettigheder for den user, der kørte websitets apppool, kunne jeg godt gennemskue, men at sætte de rigtige rettigheder var værre. Især fordi der var mange forslag på nettet, men ikke meget der virkede. Før jeg stødte på winhttpcertcfg.

Ved hjælp af dette tool, lykkedes det at få certifikatet til at virke, med en kommandolinie tilsvarende denne

Winhttpcertcfg kan hentes her, og dokumentation findes her

Leave a Reply

Your email address will not be published. Required fields are marked *