SSO Chronicles: banco, tokens y un poco de magia

¡Oye! Mi nombre es Artem Ivlev y me dedico a la arquitectura de identificación de clientes de VTB Bank. Nuestra tarea es responder a la pregunta de quién utiliza nuestro servicio bancario: banca móvil o por Internet, asistente de voz o simplemente una de las muchas oficinas. Hay muchas herramientas para esto, y quiero contarles sobre la formación de una de ellas. 





Prólogo





Es 2019, el ecosistema del banco está creciendo a pasos agigantados, y cada vez más necesitamos un punto de entrada único para los clientes y un proveedor de identificación. Y solo hay un directorio de cuentas y soluciones separadas de diferentes equipos para la autenticación.





Todavía no teníamos requisitos sobre cómo debería verse todo. Al mismo tiempo, comenzamos a hablar de inmediato sobre la autenticación de personas no solo en el banco en línea, sino también sobre los recursos de los socios. El mismo botón "Entrar por VTB". 





Así se verá la entrada a través de VTB





De esto se siguió que necesitábamos tomar la solución más universal y comenzar a usarla. En el proceso de uso, podríamos averiguar qué necesitamos exactamente, qué funciones faltan, etc.





Elegir qué camino tomar





Después de buscar en Internet, fumar los cuadrados mágicos de Gartner, comenzaron a buscar soluciones de código abierto con soporte en Rusia:





• WSO2 Identity Server





• Keycloak





• OpenAM





WSO2 , . .





WSO2 Identity Server





2019 .





(, ) —





, OAuth 2 ID- JWT, . , JWT — :





1. (HEADER) , , .





2. (PAYLOAD) — — , , .





3. (SIGNATURE) , , .





JSON Web Token (JWT)





— , . Base64.





ID- JWT : , . — . API Gateway, .









, X , , «» . 





— API Gateway. , , Redis TimeToLive.





, , ? - . , , , .





«»





, « ""» (()​ « »). (HttpOnly, SameSite, Secure) UUID. UUID , , CRC32, — JWT. . , , . , « — » . 





,  





. , , , , , -, , (, push, - ).





. , , WSO2 IS, , , API SPA. 





, JSP. -, API .





- , . 





- API/oauth2/token — . 





- grant_type, /oauth2/token, .





. - — . , — grant type. , . 





, ,





, , — - , « » . WSO2 IS . 





. PostgreSQL Redis. . 





:)





, , . — . ( , - ) . 





— , . — .





active-active active-passive, PostgreSQL Redis. - .





— WSO2 IS. . Redis, JWT refresh-. 





? SSO





WSO2 IS, , , , , . 





-. . . «», « » , , . . 





« »





, , , «» . . , , « » (, « », ). — .









, . . ? WSO2 IS? 





, , , , — , . , — .





: SSO, .





: ? , Tarantool Data Grid?








All Articles