Compileu l'inici de sessió únic (SSO) a ASP.NET MVC

Bloc

Compileu l'inici de sessió únic (SSO) a ASP.NET MVC

Una altra cosa que m’encanta SSO és que pot permetre actualitzar una gran base de codis per peça a la vegada en lloc de fer-ho alhora.

Com és això? Imagineu que voleu migrar una aplicació escrita ASP.NET MVC 5 a ASP.NET Core MVC . En lloc de reescriure tot alhora, podeu migrar un servei a la vegada. A continuació, implementant SSO entre les dues aplicacions, podeu enllaçar-les de manera efectiva com si fossin una sola.

En aquest tutorial, simularem aquest escenari implementant SSO per a una aplicació MVC 5 i una aplicació .NET Core. Al llarg del camí, també aprendreu algunes de les diferències entre la forma en què les dues plataformes implementen l’autenticació.

Obtenir la ASP.NET Aplicació MVC 5

En lloc de crear un projecte des de zero, agafarem una aplicació MVC 5 existent de GitHub. Cloneu o descarregueu aquest projecte i obriu la solució a Visual Studio.

Al Web.config al fitxer trobareu algunes opcions d’aplicació que el programador va utilitzar per configurar l’autenticació amb un servidor Open ID Connect proporcionat per Okta:

Per a aquest tutorial, haureu de canviar aquests valors a la vostra pròpia instància Okta. Inicieu la sessió al vostre domini Okta si ja teniu un compte o inscriu-te ara per a un compte de desenvolupador gratuït per sempre, si no ho feu.

Un cop hàgiu iniciat la sessió a Okta, registreu la vostra sol·licitud de client.

  • Al menú superior, feu clic a Aplicacions
  • Fer clic a Afegiu una sol·licitud
  • Seleccioneu Web i feu clic a Pròxim
  • Introduïu SSO MVC 5 per al Nom
  • Per al Es permet el tipus de subvenció comproveu el Implícit (híbrid) casella de selecció
  • Feu clic a Fet

La vostra aplicació s'ha creat, però encara heu d'afegir una cosa més. Seleccioneu Edita , afegiu http://localhost:8080/Account/PostLogout a la llista de Tancar la sessió de redirecció dels URI i feu clic a Desa .

A la pantalla següent, veureu una visió general de la configuració. A sota del fitxer Configuració general , veureu la secció Credencials del client secció. Utilitzar el Identificador de client i la Secret del client per actualitzar la configuració SSO al vostre Web.config. Després aneu a l’Okta principal panell pàgina, copieu el fitxer URL de l'organització es mostra a l'extrem superior esquerre i enganxeu-lo al okta:OktaDomain configuració de l'aplicació al vostre Web.config.

En aquest moment, hauríeu de poder executar l'aplicació i utilitzar OpenID Connect per iniciar la sessió i sortir-ne. Si teniu curiositat, podeu fer una ullada a Startup.cs per veure com es configura el middleware d’autenticació.

Obtenir la ASP.NET Aplicació bàsica

Ara que utilitzeu Okta per iniciar la sessió a l’aplicació MVC 5, afegir SSO a una segona aplicació és trivial.

Primer descarregueu o cloneu aquesta aplicació .NET Core de GitHub. Quan l'obriu a Visual Studio, canvieu l'objectiu de depuració de IIS Express a LiveMusicFinder .

com vendre fitxes de puntada

Això farà que l'aplicació s'executi a través del servidor web Kestrel al port 5001 (per a https).

Ara torneu al tauler d'administració d'Okta i registreu aquesta aplicació.

Un cop hàgiu acabat, veureu un Configuració general de la vostra aplicació. En aquesta pestanya, feu clic a Edita i afegiu una entrada al fitxer Tancar la sessió de redirecció dels URI com https://localhost:5001/signout/callback . A continuació, feu clic a Desa .

Copieu el vostre Identificador de client i Secret del client des del Credencials del client de la pàgina següent i actualitzeu el appsettings.json a la vostra sol·licitud.

'Okta': { 'ClientId': '{yourClientId}', 'ClientSecret': '{yourClientSecret}', 'OktaDomain': 'https://{yourOktaDomain}', 'PostLogoutRedirectUri': 'https://localhost:5001/' },

Mentre editeu la configuració, actualitzeu el OktaDomain que coincideix amb el que heu posat a Web.config de l'aplicació MVC 5. Canvieu també el PostLogoutRedirectUri a https://localhost:5001/ .

Això és realment tot el que hi ha. Ara, quan inicieu sessió en una de les dues aplicacions, feu clic a Log in l'enllaç de l'altra aplicació us iniciarà la sessió automàticament sense demanar cap contrasenya.

estil de fila ag-grid

(Si per algun motiu inexplicable ho proveu amb Internet Explorer i utilitzeu la funció d'inici automàtic de Visual Studio, assegureu-vos d'obrir la segona aplicació en una pestanya de la primera finestra del navegador. A causa de la peculiaritat de com Visual Studio llança IE , cada finestra del navegador està aïllada de l'altra.)

Com funciona l'inici de sessió únic ASP.NET MVC 5 i ASP.NET Nucli

Heu vist el simple que és habilitar SSO per a dos ASP.NET aplicacions, però què passa realment darrere de les escenes perquè funcioni?

Diguem que primer aneu a Aplicació 1 i feu clic a Log in. L'aplicació 1 us redirigirà a Octa IdP (proveïdor d'identitat) on inicieu la sessió. Després d'iniciar la sessió, s'establirà una galeta al vostre navegador per al domini d'Okta. Aquesta galeta us manté iniciat la sessió a Okta. A continuació, Okta us redirigirà de nou a l'aplicació 1 amb un testimoni que utilitza per completar el procés d'inici de sessió. En aquest moment, també s’estableix una galeta per al domini de l’aplicació 1. Aquí teniu un diagrama per il·lustrar l’estat:

A continuació, obriu Aplicació 2 en una altra pestanya del mateix navegador. Quan feu clic a Log in, se us redirigirà a Octa IdP de nou. Però aquesta vegada, com que encara teniu una galeta vàlida, ja heu iniciat la sessió a l’IdP. Per tant, en lloc de mostrar-vos una pantalla d'inici de sessió, Okta us redirigirà de nou a l'aplicació 2 amb el testimoni necessari per completar el procés d'inici de sessió local. Es defineix una galeta al domini de l’aplicació 2 i heu iniciat la sessió a tot arreu.

Tingueu en compte que el signe únic fora no és compatible amb Okta en el moment d'escriure. Si tanqueu la sessió de l’aplicació 1, s’eliminarà la galeta de l’aplicació 1 i hi haurà una trucada ràpida a l’Okta IdP per eliminar-la. Però la galeta de l’aplicació 2 es mantindrà i continuareu iniciant la sessió a l’aplicació 2 fins que feu clic a Log out o la cookie caduca. La caducitat predeterminada és de 30 dies.

ASP.NET S'han explicat els fluxos de connexió OpenID

És possible que us hàgiu adonat que quan configuràveu la configuració de l’aplicació MVC 5, havíeu de marcar una casella de selecció per habilitar la Implícit (híbrid) el tipus de concessió, però per a l’aplicació .NET Core no ho heu fet.

Quan el middleware OpenID Connect es va escriure per a MVC 5 fa diversos anys (molt de temps al món del programari), va implementar OpenID Connect flux híbrid , que requereix que l’IdP enviï un codi d’autorització i un testimoni d'identitat a l'aplicació MVC 5 quan redirigeix ​​l'usuari cap a l'aplicació.

Quan es va escriure el middleware OpenID Connect per a .NET Core, es va implementar el més segur codi d'autorització flux. En aquest cas, l’IdP només retorna un codi d’autorització i el middleware ha de recuperar el testimoni d’identitat mitjançant una sol·licitud de canal posterior a l’IdP. Això significa que el testimoni d'identitat no està exposat al navegador.

Si esteu passant informació sensible al testimoni d’identitat, tingueu en compte que a MVC 5 aquest testimoni es torna a l’aplicació mitjançant el navegador, on els usuaris curiosos o els scripts malintencionats poden veure’l. Si activeu SSO a totes les aplicacions de .NET Core, això no és un problema.

# desenvolupament web # asp-net #dotnet #security

developer.okta.com

Compileu l'inici de sessió únic (SSO) a ASP.NET MVC

Per tant, esteu interessats a utilitzar l'inici de sessió únic (SSO) per a les vostres aplicacions ASP.NET MVC? Heu arribat al lloc correcte. Hi ha molts motius per utilitzar SSO per a aplicacions personalitzades propietat de la mateixa organització. Millor experiència d'usuari. Menys temps de desenvolupament. Seguretat millorada. Totes aquestes són grans raons.