Cómo habilitar autenticación OAuth en swagger

Para usar servicios de tu WebApi autenticados swagger usa por defecto un input para usar un Api key. Pero lo mas probable es que en tu proyecto WebApi estés utilizando autenticación mediante usuario y contraseña para obtener un jwt token, para posteriormente utilizar  el token con un header Authorization bearer token.

Si quieres saber como configurar esta característica para usar bearer token desde swagger para poder consumir endpoints con este token, estás en la entrada que necesitas.

Si has llegado hasta aquí buscando información sobre swagger para documentar tu API, pero aún no lo tienes instalado, en esta entrada te indico cómo instalarlo. Si en cambio quieres saber qué es swagger y las posibilidades que ofrece, te sugiero esta otra entrada donde te explico qué es swagger.

Pues bien, vamos a lo que nos interesa.

La interfaz de swagger ofrece una función javascript para añadir client authorizations al realizar la llamada cuando pulsas su botón “Try it out”, esta es:

Si ahora piensas en aplicar transformaciones html a tu interfaz de swagger, para quitar el área de api key, insertando dos inputs para user y pass, con los que hacer una petición para obtener un token, e insertar dicho token en esta función, lo tendrás hecho.

No te preocupes, aquí lo estoy haciendo en este fichero .js.

Pero aquí no acaba todo, hay que insertar este código cuando la interfaz de swagger se genera.

En mi entrada sobre cómo instalar swagger te introduzco este código:

Como ya podrás imaginar, en esa sección EnableSwaggerUi es donde debemos ubicar este código que te he facilitado.

Mi recomendación es utilizar este fichero .js como recurso incrustado de alguna .dll, y posteriormente usar la dll como te indico a continuación:

Necesitarás referenciar adecuadamente el assembly de tu .dll y la ubicación exacta del archivo js como recurso incrustado de esa dll, y obviamente añadir la dll como referencia en tu proyecto WebApi.

Y listo! Con esto tendremos una interfaz de swagger capaz de usar autenticación mediante bearer token, tras obtener un token válido, con un aspecto como el que sigue a continuación.

En los dos inputs que aprecias junto al login podrás introducir las credenciales de usuario, y tras hacer click en login, se lanzará una petición para obtener un token. Si la petición tiene éxito, en el textarea aparecerá el token (este área esta colapsada, usando el “?” para visualizar el token).

Y ahora sí, siempre que tengas un token válido, y mientras este no expire, tus peticiones de swagger mediante el boton “try it out” de cada servicio expuesto, introducirán la cabecera de Authorization Bearer Token.

Espero que os sea de provecho, no me resulto fácil solucionar este problema. Si conoces otro mecanismo o forma de hacerlo, te animo a compartirla en un comentario, podríamos incluso contactar para implementar un caso de prueba exitoso.

Hasta la siguiente entrada!

Deja un comentario