1.20.7.3. 권한 부여 헤더
요청에는 권한 부여
헤더에 app_id
및 app_key
가 포함됩니다. 끝에 출력되는 하나 이상의 값이 있는 경우 app_key
를 할당할 수 있습니다.
해결 방법은 끝에 하나 또는 두 개의 출력이 있는 경우 app_key
를 할당합니다.
권한 부여
헤더는 권한 부여 유형의 값을 지정하고 해당 값은 Base64
로 인코딩됩니다. 즉, 값을 공백 문자로 분할하고, 두 번째 출력을 가져온 다음 콜론(:)을 구분자로 사용하여 다시 분할할 수 있습니다. 예를 들어 app_id:app_key
형식을 사용하는 경우 헤더는 자격 증명에
대해 다음 예와 같습니다.
aladdin:opensesame: Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
다음 예와 같이 소문자 헤더 필드 이름을 사용해야 합니다.
credentials: app_id: - header: keys: - authorization ops: - split: separator: " " max: 2 - length: min: 2 - drop: head: 1 - base64_urlsafe - split: max: 2 app_key: - header: keys: - app_key
이전 예제 사용 사례는 권한 부여의 헤더를 확인합니다
.
-
문자열 값을 가져와서 공백으로 분할하여
자격
증명( credential)과 자격 증명 자체의 두 개 이상의 값을 생성한 다음credential
그런 다음 필요한 데이터를 포함하는 두 번째 값을 디코딩하고 콜론(:) 문자를 사용하여 app_id 를 첫 번째 the
app_id
, 다음app_key
가 있는 경우 작업 스택을 사용하여 분할합니다.-
이 경우
app_key
가 권한 부여 헤더에 없는 경우 특정 소스를 확인합니다(예: 이 경우app_key
키가 있는 헤더).
-
이 경우
-
자격
증명에 추가 조건을 추가하려면기본
권한 부여를 허용하십시오. 여기서app_id
는aladdin
또는admin
이거나app_id
길이가 8자 이상입니다. app_key
는 다음 예와 같이 최소 64자 이상이어야 합니다.credentials: app_id: - header: keys: - authorization ops: - split: separator: " " max: 2 - length: min: 2 - reverse - glob: - Basic - drop: tail: 1 - base64_urlsafe - split: max: 2 - test: if: length: min: 2 then: - strlen: max: 63 - or: - strlen: min: 1 - drop: tail: 1 - assert: - and: - reverse - or: - strlen: min: 8 - glob: - aladdin - admin
-
권한 부여
헤더 값을 선택한 후 유형을 맨 위에 배치할 수 있도록 스택을 다시 실행하여기본
자격 증명
-type을 가져옵니다. -
glob 일치 항목을 실행합니다. 유효성을 검사하고 인증 정보가 디코딩되어 분할되면 스택 하단에
app_id
를 가져오고 잠재적으로 top에app_key
를 얻을 수 있습니다. 테스트 실행:
스택에 두 개의 값이 있는 경우app_key
가 인수되었음을 의미합니다.-
문자열 길이가
app_id
와app_key
를 포함하여 1에서 63 사이인지 확인합니다. 키 길이가 0인 경우 키를 놓은 후 키가 없는 것처럼 계속 진행합니다.app_id
만 있고app_key
가 없는 경우 다른 분기가 누락된 경우 성공적인 테스트 및 평가가 계속됨을 나타냅니다.
-
문자열 길이가
마지막 작업인 assert
는 어떤 side-effects make it into the stack이 없음을 나타냅니다. 그러면 스택을 수정할 수 있습니다.
맨 위에
app_id
를 갖도록 스택을 되돌립니다.-
app_key
가 있는지 여부에 관계없이 스택을 종료하면app_id
가 맨 위에 있는지 확인합니다.
-
및
을 사용하여 테스트 전반에서 스택의 콘텐츠를 보존합니다.다음 옵션 중 하나를 사용합니다.
-
app_id
에 최소 8개 이상의 문자열 길이가 있는지 확인합니다. -
app_id
가aladdin
또는admin
과 일치하는지 확인합니다.
-