Ziel: Ich möchte meinen Webservice (ASP.NET Web API mit OWIN) mit OpenID Connect schützen. Der Identitätsanbieter ist Google.
Wichtig: Ich bin nur für den Webservice verantwortlich. Ich habe KEINE Web-Anwendung (keine Benutzeroberfläche; dies ist an Dritte mit meinem Web-Service).
Überlegungen: Da mein Webservice auf einem Server ausgeführt wird, sollte der Autorisierungscodefluss (oder Hybrid?) Verwendet werden.
Was bisher gemacht wurde :
Ich habe OWIN (in meinem Webservice) konfiguriert, um OpenID Connect ( UseOpenIdConnectAuthentication
) zu verwenden.
Aktuelles Verhalten: Wenn jemand unbefugt versucht, auf den Webdienst zuzugreifen, leitet der Webdienst sie (eine 302 sendend) an Google weiter. Da ich keine Benutzeroberfläche habe, ist es an Drittparteien, die Zustimmungsseite korrekt anzuzeigen. Angenommen, der Benutzer stimmt zu und drückt "Akzeptieren".
An hier stecke ich fest ... Soweit ich verstehe, sendet Google einen Autorisierungscode zurück (den mein Webservice verwenden könnte, um einen Access Token zu erhalten). Wie kann ich den Autorisierungscode bekommen? Unterstützt Google sogar den Autorisierungscode-Fluss ( ResponseType = code
)?
Muss ich Google manuell anrufen (um den Access Token zu erhalten) und mich dann anmelden (mit GetOwinContext().Authentication.SignIn(id);
) oder kümmert sich OWIN Middleware darum?
Aktualisierung: Eine Repro ist hier: Ссылка
Tags und Links asp.net-web-api oauth-2.0 owin openid-connect google-oauth