Du kennst das. Du möchtest eine API testen, die OAuth anbietet, benötigst aber OAuth-Tokens, mit denen du arbeiten kannst - z.B. für Tests. Diese kannst du nun durch Ändern der Tests u.Ä. so zwischenschieben, dass die Tokens erzeugt werden, musst sie aber dennoch abgreifen. Auf riesige Anwendungen, die auf Electron aufbauen1, willst du grundlegend verzichten.
Dafür habe ich jetzt eine einfache, Cross-Plattform-Möglichkeit auf Basis des .NET Framework Core geschrieben, die momentan für Win10-x86, Win10-x64, osx-10.10, osx-10.11 und osx-10.12 unabhängig erstellt wird - letztere (osx) sind nicht getestet.
Du kannst dir hier2 das Repository dazu anschauen. Das Projekt ist so aufgebaut, dass eine native Anwendung kompiliert wird, die nicht auf eine installierte .NET Core-Version abhängig ist.
Einige Referenzen zur Verwendung:
PS> .\OAuth2TokenRequester.exe oauth
Usage: oauth [options] [command]
Options:
-c|--config Configuration File
--host Host
-id|--clientid Client ID
-r|--redirect Redirect URI
-s|--scope Scopes
-?|-h|--help Show help information
Commands:
auth
token
Use "oauth [command] --help" for more information about a command.
Mögliche Aktionen:
oauth auth
oauth token
PS> .\OAuth2TokenRequester.exe oauth auth -?
Usage: oauth auth [options]
Options:
-a|--auth Auth Part for URI
-?|-h|--help Show help information
Auth erlaubt es anhand eines Profils eine Request URI
aufzubauen, die im Anschluss einen Authorization Cod
e erzeugt, der dann in einem weiteren Schritt durch ein Access Token
und Refresh Token
. Diese Request URI
muss händisch im Browser ausgeführt werden - .NET Core erlaubt kein Starten eines Prozesses via https://
.
.\OAuth2TokenRequester.exe oauth -c configfile.json auth
.\OAuth2TokenRequester.exe oauth --host https://host.tld/oauth2/ --redirect https://redirect.tld/oauth/callback -s all auth --auth auth
Es wird eine Datei response.json
erstellt, in der der verwendete State sowie der Code eingetragen werden müssen. Beispiel:
{
"state": "-1",
"code": ""
}
PS> .\OAuth2TokenRequester.exe oauth token -?
Usage: oauth token [options]
Options:
--token Token Part for URI
-secret|--clientsecret Client Secret
--state State Value
--code Response code
-?|-h|--help Show help information
Anhand der zuvor erstellten response.json
kann nun ein Token
-Set, bestehend aus access_token
und refresh_token
, erzeugt werden. Hierzu wird zum oauth
-Command eine weitere Konfiguration angehangen.
.\OAuth2TokenRequester.exe oauth -c configfile.json -c response.json token
{
"host": "scheme://host.tld/common-path",
"authPart": "/auth",
"tokenPart": "/token"
"clientId": "sample",
"clientSecret": "sample",
"redirectUri": "scheme://redirect.uri.tld/oauth/callback",
"scopes": [
"translated",
"into",
"space",
"separated",
"query",
"parameter"
]
}