OAuth와 JWT 차이
·
여러가지/이것저것
JWT(Json Web Token)와 OAuth는 웹 및 애플리케이션 개발에서 인증과 권한 부여를 다루는 데 널리 사용되지만, 기본적으로 다른 목적과 구조를 가집니다. JWT (Json Web Token) 정의: JWT는 JSON 객체를 사용하여 두 당사자 사이에서 정보를 안전하게 전송하기 위한 표준 포맷입니다. 이 정보는 디지털 서명되어 있어, 검증이 가능하며 변조가 어렵습니다. 주용도: 주로 인증 이후 사용자의 정보와 세션을 표현하는 토큰으로 사용됩니다. 서버는 클라이언트의 요청과 함께 전송된 JWT를 검증하여, 해당 요청이 유효한 사용자로부터 왔는지를 확인할 수 있습니다. 자체 포함적: JWT는 필요한 모든 정보(예: 사용자의 식별 정보, 토큰의 만료 시간 등)를 자체적으로 포함하고 있어, 상태를 ..
OAuth1.0 과 OAuth2.0
·
여러가지/이것저것
OAuth는 오픈 스탠다드 인증 프로토콜로, 사용자가 서드파티 애플리케이션에게 자신의 웹 서비스의 리소스에 대한 접근 권한을 제공할 수 있게 해줍니다. OAuth를 사용하면 사용자는 자신의 로그인 정보를 제3의 애플리케이션과 공유하지 않고도, 그 애플리케이션에게 특정 정보에 접근하거나 특정 기능을 실행할 권한을 부여할 수 있습니다. OAuth의 핵심 개념 리소스 소유자(Resource Owner): 보통 최종 사용자로, 보호되는 리소스에 대한 접근 권한을 부여할 수 있는 역할입니다. 리소스 서버(Resource Server): 사용자의 정보를 보유하고 있는 서버로, 보호된 리소스를 호스팅합니다. 리소스 서버는 액세스 토큰을 통해 보호된 리소스에 대한 접근을 제어합니다. 클라이언트(Client): 사용자 ..
JWT란
·
여러가지/이것저것
JWT(Json Web Token)는 인터넷 표준으로, 두 당사자 사이에서 JSON 객체를 사용하여 가볍고 자가수용적인 방식으로 정보를 안전하게 전송하기 위해 설계되었습니다. JWT는 주로 사용자 인증과 정보 교환에 사용됩니다. 자가수용적(self-contained)이라는 것은, 토큰 자체가 필요한 모든 정보를 포함하고 있어, 토큰을 받는 측에서는 추가적인 조회 없이도 해당 정보를 검증하고 사용할 수 있다는 의미입니다. JWT는 세 부분으로 구성됩니다: Header, Payload, Signature. Header: 토큰의 타입(주로 JWT)과 해싱 알고리즘(예: HMAC SHA256 또는 RSA)이 포함됩니다 Payload: 토큰에 포함될 클레임(claim) 정보가 포함됩니다. 클레임은 토큰에 대한 속..
단방향 암호화
·
여러가지/이것저것
단방향 암호화(One-way encryption)는 해시 함수를 사용하여 데이터를 암호화하는 방식입니다. 이 암호화 방식의 핵심은 암호화된 데이터를 원래의 데이터로 복호화할 수 없다는 점입니다. 단방향 암호화는 주로 데이터 무결성 검증, 안전한 비밀번호 저장 등에 사용됩니다. 단방향 암호화의 주요 특징 불가역성(Irreversibility): 단방향 암호화로 처리된 데이터는 원본 데이터로 되돌릴 수 없습니다. 즉, 해시 함수는 복호화 키 없이 원본 데이터를 추출할 수 없도록 합니다. 고유성(Uniqueness): 동일한 입력값에 대해 항상 동일한 출력값(해시)을 생성합니다. 그러나 서로 다른 입력값에서 같은 출력값을 얻는 경우를 해시 충돌(Hash Collision)이라고 하며, 이는 매우 드물게 발생해..
비대칭키, 대칭키 암호화
·
여러가지/이것저것
대칭키 암호화(Symmetric-key encryption) 대칭키 암호화에서는 암호화와 복호화 과정에 동일한 키를 사용합니다. 즉, 송신자와 수신자는 메시지를 안전하게 전송하기 위해 미리 공유된 하나의 비밀 키를 사용합니다. 이 방식의 주요 장점은 처리 속도가 빠르다는 것입니다. 그러나 키를 안전하게 교환하고 관리하는 것이 주요 도전 과제입니다. 대표적인 대칭키 암호화 알고리즘으로는 AES(Avanced Encryption Standard)와 DES(Data Encryption Standard)가 있습니다. 비대칭키 암호화(Asymmetric-key encryption) 비대칭키 암호화에서는 암호화와 복호화 과정에 서로 다른 두 개의 키를 사용합니다. 이 두 키는 일반적으로 공개 키와 개인 키라고 불립..
동기와 비동기
·
여러가지/이것저것
동기와 비동기, 그리고 블로킹과 넌블로킹은 프로그래밍에서 자주 사용되는 개념들로, 데이터 처리 및 I/O 작업의 실행 방식을 설명합니다. 이 개념들은 서로 밀접하게 연관되어 있지만, 각각 다른 관점에서 행동을 설명합니다. 동기(Synchronous) vs 비동기(Asynchronous) 동기: 동기 방식에서는 작업 요청과 그 결과가 시간적으로 일치합니다. 즉, 한 작업의 요청이 끝날 때까지 기다린 후 다음 작업을 시작합니다. 이는 작업 처리 순서가 명확하고 이해하기 쉽다는 장점이 있지만, 이전 작업이 완료될 때까지 다음 작업이 대기해야 하므로 리소스 활용에 비효율적일 수 있습니다. 비동기: 비동기 방식에서는 작업 요청 후 그 결과와는 독립적으로 다음 코드가 즉시 실행됩니다. 이는 여러 작업을 동시에 처리..
컨텍스트 스위칭이란?
·
여러가지/이것저것
컨텍스트 스위칭(Context Switching)은 멀티태스킹 운영 체제에서 CPU가 여러 프로세스 또는 스레드를 번갈아 가며 실행하여, 마치 동시에 여러 작업을 처리하는 것처럼 보이게 하는 과정입니다. 이 방법은 시스템의 자원 활용도를 높이고, 사용자에게 더 빠른 응답 시간을 제공하는 데 중요한 역할을 합니다. 컨텍스트 스위칭의 과정 인터럽트 발생: 타이머 인터럽트, I/O 요청 완료, 멀티스레딩 환경에서의 스레드 전환 요청 등 다양한 이유로 인터럽트가 발생할 수 있습니다. 현재 상태 저장: 현재 실행 중인 프로세스(또는 스레드)의 상태를 프로세스 제어 블록(PCB)에 저장합니다. 이 상태에는 CPU 레지스터 정보, 프로그램 카운터, 스택 포인터 등이 포함됩니다. 다음 작업 로드: 다음에 실행할 프로세..
Process와 Thread의 차이
·
여러가지/이것저것
프로세스와 스레드는 현대 컴퓨팅에서 프로그램을 실행하는 두 가지 기본적인 단위입니다. 이들 사이의 주요 차이점을 이해하는 것은 멀티태스킹과 멀티스레딩 환경에서 프로그램의 성능과 자원 활용을 최적화하는 데 중요합니다. 프로세스(Process) 정의: 프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 체제는 각 프로세스에 메모리(코드, 데이터, 스택, 힙 등), CPU 시간, I/O 등 필요한 자원을 할당합니다. 자원 할당: 각 프로세스는 독립된 메모리 공간(주소 공간)을 할당받으며, 다른 프로세스의 자원에 직접 접근할 수 없습니다. 이는 프로세스 간의 데이터 격리를 보장하며, 시스템의 안정성을 유지하는 데 도움이 됩니다. 통신과 동기화: 프로세스 간 통신(IPC)은 소켓, 파이프, 파일 시스템 등을 통..