Sodium is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing, and more. It is a portable, cross-compilable, installable, and packageable fork of NaCl, with a compatible but extended API to improve usability even further. Its goal is to provide all of the core operations needed to build higher-level cryptographic tools. Sodium is cross-platform and cross-language. It runs on many compilers and operating systems, including Windows (with MinGW or Visual Studio, x86 and x86_64), iOS, and Android. JavaScript and WebAssembly versions are also available and fully supported. Furthermore, bindings for all common programming languages are available and well-supported. The design choices emphasize security and ease of use. But despite the emphasis on high security, primitives are faster across-the-board than most implementations.:
1) 각 사용자 DB의 접속정보를 sodium 으로 암호화한 후 해당 접속정보를 Frontend Locate 하고 2) 해당정보를 Backend 에 제출하고 GateToken을 리턴 받아서 해당 토큰으로 세션을 유지하 는 동시에 DB 접속정보를 Backend의 Memory DB 에만 임시로 존재하게 하는 Frontend Driven 방식을 채택함으로써 3) ISMS 보안 사항을 준수합니다. 4) 동일한 Backend API 로 다양한 Microservice Frontend 요청을 처리할 수 있는 Gateway API를 제공합니다.
1) 최초에 작성된 sodium Key Pair는 SSO 서버에 별도로 저장이 됩니다. 2) Frontend 에는 .env.dabory에 BeforeBase64 Key에 DB 접속 정보가 저장됩니다. 3) Frontend 가 Backend API 를 사용하기 위해서 최초에 Client Id와 BA64 Key를 제출하면 GateToken을 Return 받습니다. 4) 이 때 Backend API 서버의 Memory DB에 해당 GateToken과 연관된 DB접속 정보가 생성되어 이후 DB 접속을 반복할 수 있습니다. 5) Key pair는 SSO 서버에 저장되고 가져오는 것이 기본으로 되어 있으나 Backend API 서버의 conf 화일에 저장해서 운용됨으로써 SSO 서버와의 독립적으로 운영될 수 있습니다.
Frontend에서 Sodium과 관련된 소스코드
A. Ajax를 이용하여 Sodium function 구성 이유.
팝업 div에서 직접 PHP 코드를 사용할 수 없으므로 Ajax를 이용하여 Sodium function 을 서비스 합니다