PHP의 응답 헤더에 토큰을 추가하는 방법

藏色散人
풀어 주다: 2023-03-17 22:00:01
원래의
3884명이 탐색했습니다.

PHP에서 응답 헤더에 토큰을 추가하는 방법: 1. Bearer 모드를 사용하여 요청 헤더의 Authorization 필드에 JWT를 추가합니다. 2. 서버가 요청을 받은 후 JWT 사양을 사용하여 토큰을 생성합니다. 클라이언트에게 반환할 수 있습니다.

PHP의 응답 헤더에 토큰을 추가하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, PHP 버전 8.1, DELL G3 컴퓨터

php는 어떻게 응답 헤더에 토큰을 추가합니까?

PHP 토큰 생성 및 사용

1. 로그인에 토큰을 사용하는 이유

프런트엔드와 백엔드를 분리하거나 여러 웹 애플리케이션을 지원하려면 원본을 사용하는 데 큰 문제가 있습니다. 쿠키 또는 세션

쿠키와 세션 인증은 인증되기 전에 동일한 기본 도메인 이름 아래에 있어야 합니다(현재 문제 해결을 위해 세션을 redis에 저장할 수 있습니다).

2. 솔루션

oauth2 및 jwt

jwt: 보안 표준입니다. 기본 아이디어는 사용자가 인증 서버에 사용자 이름과 비밀번호를 제공하고 서버가 사용자가 제출한 정보의 적법성을 확인하는 것입니다. 확인에 성공하면 토큰(토큰)이 생성되어 반환됩니다.

OAuth2 : 안전한 인증 프레임워크입니다. 시스템의 다양한 역할, 사용자, 서비스 프런트엔드 애플리케이션(예: API) 및 클라이언트(예: 웹사이트 또는 모바일 앱) 간에 상호 인증을 달성하는 방법을 자세히 설명합니다.

(jwt, 이 JSON 웹 토큰은 여기서 인증에 사용됩니다.)

3. 생성 방법

Header: 암호화 유형

Description: 메시지 내용

key: 암호화에 사용되는 임의의 코드

위의 세 부분은 다음과 같습니다. 그런 다음 hs256을 사용하여 암호화하여 토큰을 생성합니다

4. 자세한 생성 방법

1) 헤더는 일반적으로 토큰 유형(예: JWT)과 사용되는 암호화 알고리즘(예: SHA256 또는 RSA)으로 구성됩니다. )

{
      "alg": "HS256",
      "typ": "JWT"
}
로그인 후 복사

그러면 이 json은 Base64Url로 인코딩되어 첫 번째 부분이 됩니다

2) 페이로드가 문입니다. 선언은 엔터티에 관한 것입니다.

{
      "exp": "1525785339",
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
}
로그인 후 복사

페이로드는 Base64Url로 인코딩되어 두 번째 부분이 됩니다

(PS: 이 정보는 변조로부터 보호되지만 누구나 읽을 수 있습니다. 암호화되지 않은 한 중요한 정보를 내부에 넣지 마십시오.)

3) . 암호화 키

4) 서명하려면 첫 번째 인코딩된 부분, 두 번째 인코딩된 부분, 키 키를 사용해야 합니다. 첫 번째 부분의 암호화 알고리즘을 사용하여 서명

HMACSHA256(
          base64UrlEncode(header) + "." + base64UrlEncode(payload),
          key
)
로그인 후 복사

이 서명은 메시지가 변조되었는지 확인하는 데 사용됩니다.

(PHP는 암호화를 위해 crypt 방식을 사용합니다. 참고: SHA-256은 변조 방지를 위해 사용되고 AES-256은 암호화를 위해 사용됩니다. 두 개념은 다릅니다.)

5. 토큰 저장 위치

는 일반적으로 다음과 같습니다. 요청 헤더에 Authorization 필드는 Bearer 모드를 사용하여 JWT(Authorization: Bearer)를 추가합니다. (물론 클라이언트가 인식할 수 있는 한 URL 뒤에 매개변수로 전달하는 등 어디에나 배치할 수도 있습니다. , 하지만 JWT는 사양이므로 사양을 따르는 것이 좋습니다. )

6. 사용 방법

클라이언트 사용자가 사용자 이름과 비밀번호를 입력하여 로그인하고 토큰을 요청합니다

서버가 요청을 받은 후, JWT 사양을 사용하여 토큰을 생성하고 클라이언트에 반환합니다

클라이언트가 이를 수신합니다. 토큰을 받은 후 이를 복호화한 후 토큰의 적시성(토큰 만료 시간)을 확인하고 클라이언트에 저장합니다. 서버는 토큰을 받아 복호화한 후 사용자의 신원을 확인하고 적시성을 확인한 후 사용자를 확인합니다.

7. 발급된 토큰을 무효화할 수 없습니다. (사용 기간을 새로 고칠 수 없습니다.) of tokens)

2. 만료된 데이터 처리가 쉽지 않습니다(토큰 무효화 지원)

그래서 토큰을 사용하다가 토큰이 캡처되면 위조 및 사칭이 가능합니다. 따라서 보안이 상대적으로 높더라도 oauth2

를 사용하는 것이 좋습니다. 권장 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP의 응답 헤더에 토큰을 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿