1.20.7.3. 권한 부여 헤더

요청에는 권한 부여 헤더에 app_idapp_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

이전 예제 사용 사례는 권한 부여 의 헤더를 확인합니다.

  1. 문자열 값을 사용하고 공백으로 분할하여 자격증명 유형과 자격 증명 자체의 값이 두 개 이상 생성되는지 확인한 다음 자격 증명 -type을 삭제합니다.
  2. 그런 다음 필요한 데이터를 포함하는 두 번째 값을 디코딩하고 콜론(:) 문자를 사용하여 먼저 app_id, 존재하는 경우 app_ key 를 포함한 작업 스택을 갖도록 하여 분할합니다.

    1. app_key 가 권한 부여 헤더에 없는 경우 특정 소스를 확인합니다(예: 이 경우 키가 app_key 인 헤더).
  3. 자격 증명에 조건을 추가하려면 기본 권한을 허용합니다. 여기서 app_id 는 ALaddin 또는 admin 이거나 모든 app_id 길이가 8자 이상인 경우입니다.
  4. 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
  5. 권한 부여 헤더 값을 선택하면 유형을 위에 배치하도록 스택을 역순으로 하여 기본 자격 증명-type이 표시됩니다.
  6. glob 일치를 실행합니다. 유효성을 검사하고 자격 증명을 디코딩하고 분할하면 스택 하단에 app_id 가 표시되고 상단에 있는 app_key 가 표시됩니다.
  7. 테스트 실행: 스택에 두 개의 값이 있는 경우, 즉 app_key 를 획득했습니다.

    1. app_id 및 app_ key 를 포함하여 문자열 길이가 1에서 63 사이인지 확인합니다. 키의 길이가 0이면 삭제한 후 키가 없는 것처럼 계속합니다. app_id만 있고 app_ key 가 없는 경우 다른 분기가 누락되면 성공적인 테스트 및 평가가 계속됨을 나타냅니다.

마지막 작업 assert 는 부작용이 스택에 발생하지 않음을 나타냅니다. 그런 다음 스택을 수정할 수 있습니다.

  1. 스택을 역순으로 표시하여 app_id 를 맨 위에 둡니다.

    1. app_key 가 있는지 여부에 관계없이 스택을 되돌리면 app_id 가 맨 위에 있는지 확인합니다.
  2. 를 사용하여 테스트 중에 스택 내용을 보존합니다.

    그런 다음 다음과 같은 가능성 중 하나를 사용하십시오.

    • app_id 의 문자열 길이가 8 이상인지 확인합니다.
    • app_id 가 ALaddin 또는 admin 과 일치하는지 확인합니다.