서명 알고리즘 기반의 간단하고 안전한 API 인증 메커니즘은 무엇입니까?
광고 시스템 작업을 하던 중 제가 연결한 대부분의 플랫폼의 광고 시스템이 인터페이스 인증을 위해 토큰을 사용한다는 사실을 발견했는데, 이 토큰은 변경되지 않고 광고주가 제공한 것이라고 할 수 있습니다. 인터페이스이지만 이것은 악의적인 호출을 방지하고 채널의 신원을 확인할 수 있는 높은 보안 요구 사항이 없는 인터페이스입니다.
작년에 저자는 내부 서비스 개방형 인터페이스 및 타사 시스템 호출에 대한 통합 인증 관리를 제공하는 API 통합 인증 플랫폼을 작성했습니다. 관리 인터페이스 인증을 용이하게 하는 것 외에 다른 목적은 없지만 배포하는 데 비용이 듭니다. . 이것은 아마도 내가 해본 프로젝트 중 가장 무의미한 프로젝트일 것입니다.
오늘 소개된 API 인증 메커니즘은 더 널리 사용되는 API 인터페이스 인증 메커니즘일 수도 있습니다. 작성자가 WeChat 결제 기능을 사용할 때 WeChat에서 제공하는 결제 인터페이스도 서명이라는 방법을 사용했던 것으로 기억합니다. 장점: 간단하고 성능에 영향을 주지 않으며 추가 비용이 없습니다.
이 인증 방법의 구현 논리는 인증자가 각 액세스 플랫폼에 대해 고유한 ID(키)와 독립 키를 설정한다는 것입니다. 이는 실제로 계정 비밀번호와 동일합니다. 액세스하는 시스템은 요청을 시작할 때마다 요청 헤더에 세 가지 매개변수, 즉 ID(키), 요청의 타임스탬프, 승인 시스템이 요청을 수신할 때 서명을 확인해야 합니다. 통과해야만 공개됩니다.
서명을 검증하는 과정은 요청 헤더에서 키와 타임스탬프를 얻은 다음, 키를 기반으로 동일한 알고리즘을 사용하여 서명을 생성하고(발신자와 승인자는 동일한 서명 알고리즘을 사용함) 마지막으로 서명을 비교하는 것입니다. 동일한지 확인하기 위해 요청 헤더에서 가져옵니다. 그렇다면 확인에 성공한 것이고, 그렇지 않으면 확인에 실패합니다.
서명 알고리즘 기반 인증 방식의 구현 과정은 다음과 같습니다.
인증자:
1 서명 알고리즘을 정의하고, 접속자에게 서명 생성 알고리즘을 제공하고, 접속자에 대한 키와 ID를 생성합니다.
2. 프로젝트에서 서명 확인이 필요한 인터페이스를 가로채고, 요청 헤더에서 타임스탬프와 ID를 얻고, 키와 서명 알고리즘을 기반으로 서명을 생성하고, 생성된 서명을 3. 그렇지 않으면 요청을 거부합니다.
3. 적시성 확인을 요청하고 요청이 다음 범위 내에 있는 경우 현재 시스템 타임스탬프와 비교합니다. 유효한 시간 범위이면 요청을 해제하고, 그렇지 않으면 거부하고 서명이 만료되었다고 응답합니다.
접속 당사자:
1. 승인된 당사자로부터 도킹 문서를 획득하고 승인된 당사자에게 키와 ID를 요청합니다.
2. 문서에서 제공하는 서명 생성 알고리즘에 따라 서명 방법을 캡슐화합니다.
3. 요청 시 ID, 현재 타임스탬프 및 서명이 요청 헤더에 기록됩니다.
서명 생성 알고리즘은 사용자 정의할 수 있습니다. 예를 들어 ID(키), 타임스탬프(타임스탬프) 및 키를 함께 접합한 후 MD5 알고리즘과 같이 되돌릴 수 없는 알고리즘을 사용하여 문자열을 암호화하여 서명을 생성합니다. 규칙이 복잡할수록 해독하기가 더 어려워집니다.
서명에 타임스탬프를 추가하면 어떤 이점이 있나요?
첫 번째는 서명에 적시성을 추가하는 것입니다. 인증 시스템은 요청 타임스탬프를 사용하여 현재 타임스탬프와 비교하여 서명의 유효 시간을 1초 또는 5초로 제한할 수 있습니다. 단, 양측의 시스템 시간이 정확해야 합니다.
두 번째는 보안입니다. 해커가 요청을 수정한 다음 요청을 시작하면 시스템이 변조된 요청을 수신할 때 서명의 유효 기간이 길어집니다. 통과했다. 요청 헤더에 전달된 타임스탬프를 변경하면 요청 승인 시스템이 요청 헤더에 전달된 서명과 다른 서명을 생성하므로 요청은 여전히 유효하지 않습니다.
키를 모르면 권한을 부여하는 당사자(육계)의 서명 규칙을 모르면 유효한 서명을 생성할 수 없습니다. 비대칭 암호화 알고리즘을 사용하여 서명된 파일을 사용하면 무차별 대입을 통해 키를 해독하는 것이 거의 불가능합니다.
그럼 시간 문자열 형식을 지정하는 대신 타임스탬프를 사용하는 이유는 무엇입니까?
이는 시간대 호환성 때문일 수 있습니다. 서로 다른 컴퓨터실이 서로 다른 시간대에 있는 경우 시간은 다르지만 타임스탬프는 동일합니다.
이 인증 방법의 보안을 극대화하려면 먼저 서명 생성 규칙이 충분히 복잡해야 하며, 서명의 암호화 알고리즘은 Base64와 같은 알고리즘을 절대 사용할 수 없어야 합니다. 충분히 길고 복잡해야 합니다. 이렇게 하면 서명 생성 규칙을 알고 있더라도 무차별 대입을 통해 키를 해독하는 것이 불가능합니다.
서명 규칙은 암호화 전에 서명 문자열을 생성하는 규칙을 의미합니다. 예를 들어 규칙에는 키, 비밀 키, 타임스탬프가 포함되며 여기서 키와 키는 두 번 나타납니다. 키는 "app", 비밀키는 "123", 타임스탬프는 "11111111111111", 스플라이싱으로 생성된 사전 암호화된 서명은 "app1231111111111111app123", 마지막으로 스플라이싱된 문자열이 암호화 알고리즘을 통해 암호화된다고 가정하자. 최종 서명을 생성합니다.
인터페이스별로 시그니처 로직을 작성하는 게 번거롭지 않나요?
아니요. 승인자의 경우 서명 확인 논리는 호출자에 대한 필터 또는 인터셉터를 통해 완료될 수 있으며, 다양한 프레임워크를 사용하는 다양한 방법이 있지만 항상 서명 논리를 한 번만 작성하는 방법을 찾을 수 있습니다.
위 내용은 서명 알고리즘 기반의 간단하고 안전한 API 인증 메커니즘은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 및 ManticoreSearch 개발 가이드: 신속하게 검색 API 만들기 검색은 최신 웹 애플리케이션에 없어서는 안 될 기능 중 하나입니다. 전자상거래 웹사이트, 소셜 미디어 플랫폼, 뉴스 포털 등 사용자가 관심 있는 콘텐츠를 찾을 수 있도록 효율적이고 정확한 검색 기능을 제공해야 합니다. 탁월한 성능을 갖춘 전체 텍스트 검색 엔진인 ManticoreSearch는 우수한 검색 API를 생성할 수 있는 강력한 도구를 제공합니다. 이 기사에서는 다음 방법을 보여줍니다.

PHP 프로젝트에서 API 인터페이스를 호출하여 데이터를 크롤링하고 처리하는 방법은 무엇입니까? 1. 소개 PHP 프로젝트에서는 종종 다른 웹사이트에서 데이터를 크롤링하고 이러한 데이터를 처리해야 합니다. 많은 웹사이트에서는 API 인터페이스를 제공하며, 우리는 이러한 인터페이스를 호출하여 데이터를 얻을 수 있습니다. 이 기사에서는 PHP를 사용하여 API 인터페이스를 호출하여 데이터를 크롤링하고 처리하는 방법을 소개합니다. 2. API 인터페이스의 URL과 매개변수를 얻으십시오. 시작하기 전에 대상 API 인터페이스의 URL과 필수 매개변수를 얻어야 합니다.

ReactAPI 호출 가이드: 백엔드 API와 상호 작용하고 데이터를 전송하는 방법 개요: 최신 웹 개발에서는 백엔드 API와 상호 작용하고 데이터를 전송하는 것이 일반적인 요구 사항입니다. 널리 사용되는 프런트엔드 프레임워크인 React는 이 프로세스를 단순화하는 몇 가지 강력한 도구와 기능을 제공합니다. 이 기사에서는 React를 사용하여 기본 GET 및 POST 요청을 포함하여 백엔드 API를 호출하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 필요한 종속성을 설치하십시오. 먼저 Axi가 프로젝트에 설치되어 있는지 확인하십시오.

Oracle은 세계적으로 유명한 데이터베이스 관리 시스템 제공업체이며, Oracle의 API(응용 프로그래밍 인터페이스)는 개발자가 Oracle 데이터베이스와 쉽게 상호 작용하고 통합하는 데 도움이 되는 강력한 도구입니다. 이 기사에서는 Oracle API 사용 가이드를 자세히 살펴보고 독자들에게 개발 프로세스 중에 데이터 인터페이스 기술을 활용하는 방법을 보여주고 구체적인 코드 예제를 제공합니다. 1.오라클

데이터 기반 애플리케이션 및 분석 세계에서 API(애플리케이션 프로그래밍 인터페이스)는 다양한 소스에서 데이터를 검색하는 데 중요한 역할을 합니다. API 데이터로 작업할 때 액세스하고 조작하기 쉬운 형식으로 데이터를 저장해야 하는 경우가 많습니다. 그러한 형식 중 하나는 표 형식의 데이터를 효율적으로 구성하고 저장할 수 있는 CSV(쉼표로 구분된 값)입니다. 이 기사에서는 강력한 프로그래밍 언어인 Python을 사용하여 API 데이터를 CSV 형식으로 저장하는 프로세스를 살펴봅니다. 이 가이드에 설명된 단계를 수행하여 API에서 데이터를 검색하고, 관련 정보를 추출하고, 추가 분석 및 처리를 위해 CSV 파일에 저장하는 방법을 알아봅니다. Python을 사용한 API 데이터 처리의 세계에 대해 알아보고 CSV 형식의 잠재력을 활용해 보겠습니다.

Oracle API 통합 전략 분석: 시스템 간의 원활한 통신을 위해서는 특정 코드 예제가 필요합니다. 오늘날 디지털 시대에 내부 기업 시스템은 서로 통신하고 데이터를 공유해야 하며 Oracle API는 원활한 통신을 돕는 중요한 도구 중 하나입니다. 시스템 간 통신. 이 기사에서는 OracleAPI의 기본 개념과 원칙부터 시작하여 API 통합 전략을 살펴보고 마지막으로 독자가 OracleAPI를 더 잘 이해하고 적용할 수 있도록 구체적인 코드 예제를 제공합니다. 1. 기본 오라클 API

제목: Laravel API 오류 보고 처리 방법, 구체적인 코드 예제가 필요합니다. Laravel을 개발하다 보면 API 오류가 자주 발생합니다. 이러한 오류는 프로그램 코드 논리 오류, 데이터베이스 쿼리 문제, 외부 API 요청 실패 등 다양한 이유로 인해 발생할 수 있습니다. 이러한 오류 보고서를 처리하는 방법은 핵심 문제입니다. 이 문서에서는 Laravel API 오류 보고서를 효과적으로 처리하는 방법을 보여주기 위해 특정 코드 예제를 사용합니다. 1. Laravel의 오류 처리

MongoDB를 사용하여 간단한 CRUD API를 개발하는 방법 현대 웹 애플리케이션 개발에서 CRUD(생성, 삭제, 수정, 확인) 작업은 가장 일반적이고 중요한 기능 중 하나입니다. 이 기사에서는 MongoDB 데이터베이스를 사용하여 간단한 CRUD API를 개발하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. MongoDB는 데이터를 문서 형식으로 저장하는 오픈 소스 NoSQL 데이터베이스입니다. 기존 관계형 데이터베이스와 달리 MongoDB에는 사전 정의된 스키마가 없습니다.
