Rozwiązywanie problemów związanych z błędem wdrożenia zasady JWT

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidNameForAdditionalClaim

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid name for additional claim : policy(policy_name) claim(claim_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli nazwa roszczenia użyta w elemencie podrzędnym <Claim> elementu <AdditionalClaims> jest jedną z tych zarejestrowanych nazw:

„kid”, „iss”, „sub”, „aud”, „iat”, „exp”, „nbf”, „jti”

Zarejestrowane roszczenia są określone w dokumencie RFC7519.

Na przykład użycie nazwy roszczenia iss w elemencie <AdditionalClaims> spowoduje ten błąd.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generate JWT i nazwę roszczenia z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa roszczenia to iss:

    Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
    
  2. Sprawdź, czy nazwa deklaracji użyta w elemencie <AdditionalClaims> w nieudanej zasadzie XML generowania JWT jest zgodna z nazwą deklaracji podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład te zasady określają roszczenie jako iss, co odpowiada treści komunikatu o błędzie:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name="iss"/>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. Jeśli nazwa roszczenia użyta w elemencie podrzędnym <Claim>elementu<AdditionalClaims> jest jedną z tych zarejestrowanych nazw:

    „kid”, „iss”, „sub”, „aud”, „iat”, „exp”, „nbf”, „jti”

    wtedy to jest przyczyną błędu.

    W przykładzie zasady generowania tokena JWT pokazanym powyżej nazwa <Claim> jest określona jako iss w elemencie <AdditionalClaims>, co powoduje błąd:

    Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
    

Rozdzielczość

Nie używaj żadnej z zarejestrowanych nazw „kid”, „iss”, „sub”, „aud”, „iat”, „exp”, „nbf” ani „jti” w elemencie podrzędnym <Claim>elementu<AdditionalClaims>.

Aby poprawić pokazaną powyżej zasadę generowania tokena JWT, zmień nazwę roszczenia na status:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='status' type='string'>Development</Claim>
    </AdditionalClaims>
</GenerateJWT>

InvalidTypeForAdditionalClaim

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid type for additional claim : policy(policy_name) claim(claim_name) type(type_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli typ roszczenia użyty w elemencie podrzędnym <Claim> elementu <AdditionalClaims> w zasadach GenerateJWT nie jest jednym z tych typów:

string (domyślnie), number, boolean lub map

Na przykład użycie typu roszczenia integer w elemencie <AdditionalClaims> spowoduje błąd.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generate JWT, nazwę deklaracji i typ deklaracji. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, nazwa deklaracji to claim, a typ deklaracji to integer:

    Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).
    
  2. Sprawdź, czy nazwa i typ roszczenia użyte w elemencie <AdditionalClaims> w nieudanej zasadzie XML generowania JWT są zgodne z nazwą i typem roszczenia podanymi w komunikacie o błędzie w kroku 1. Na przykład poniższe zasady określają roszczenie jako claim, a typ jako integer, co odpowiada temu, co znajduje się w komunikacie o błędzie:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='integer'/>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. Jeśli typ roszczenia użyty w elemencie podrzędnym <Claim> elementu <AdditionalClaims> nie jest jednym z tych typów:

    string (domyślnie), number, boolean lub map

    wtedy to jest przyczyną błędu.

    W przykładzie zasady Generowanie tokena JWT pokazanym powyżej typ <Claim> w elemencie <AdditionalClaims> jest określony jako integer. Ponieważ integer nie jest obsługiwanym typem, pojawi się błąd:

    Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).
    

Rozdzielczość

Upewnij się, że w elemencie podrzędnym <Claim> elementu <AdditionalClaims> używane są tylko obsługiwane typy danych, takie jak string, number, boolean lub map.

Aby poprawić przykładową zasadę generowania tokena JWT pokazaną powyżej, zmień typ roszczenia na boolean.

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</GenerateJWT>

MissingNameForAdditionalClaim

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Error occurred while validation of bean(policy_name.xml) Reason: - Required attribute name is missing in Claim.

Przykładowy komunikat o błędzie

Error Saving Revision 2
Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli nazwa roszczenia nie jest określona w elemencie podrzędnym <Claim> elementu <AdditionalClaims> lub <AdditionalHeaders>.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generate JWT. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256:

    Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
    
  2. Sprawdź kod XML zasady Generate JWT, która nie powiodła się, i upewnij się, że w elemencie podrzędnym <Claims> w elemencie <AdditionalClaims> lub <AdditionalHeaders> nie brakuje nazwy deklaracji. Na przykład ta zasada generowania tokena JWT nie określa nazwy roszczenia w elemencie <AdditionalClaims>:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim ref='reqclaim' type='boolean'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Ponieważ nazwa <Claim> nie jest określona w elemencie <AdditionalClaims>, pojawia się błąd:

    Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
    

Rozdzielczość

Upewnij się, że nazwa roszczenia jest zawsze określona w elemencie podrzędnym <Claim> elementu <AdditionalClaims> lub <AdditionalHeaders>.

Aby poprawić pokazaną powyżej zasadę generowania tokena JWT, podaj nazwę roszczenia w sposób pokazany poniżej:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</GenerateJWT>

InvalidNameForAdditionalHeader

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid name for additional header : policy(policy_name)header(header_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli nazwa deklaracji użytej w elemencie podrzędnym <Claim> elementu <AdditionalHeaders> jest jednym z tych standardowych nagłówków JWT:

alg lub typ

Na przykład użycie nazwy roszczenia alg w elemencie <AdditionalHeaders> spowoduje błąd.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generate JWT i nazwę nagłówka z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa nagłówka to alg:

    Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
    
  2. Sprawdź, czy nazwa nagłówka użyta w elemencie podrzędnym <Claim> w elemencie <AdditionalHeaders> w nieudanym pliku XML zasady Generate JWT jest zgodna z nazwą nagłówka podaną w komunikacie o błędzie w kroku 1. Na przykład ta zasada określa nagłówek jako alg, co odpowiada treści komunikatu o błędzie:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalHeaders>
            <Claim name="alg"/>
        </AdditionalHeaders>
    </GenerateJWT>
    
  3. Jeśli nazwa nagłówka użyta w elemencie podrzędnym <Claim> elementu <AdditionalClaims> jest jednym z tych standardowych nagłówków JWT:

    alg lub typ

    wtedy to jest przyczyną błędu.

    W przykładzie zasady generowania tokena JWT pokazanym powyżej nazwa <Claim> jest określona jako alg w elemencie <AdditionalClaims>, co powoduje błąd:

    Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
    

Rozdzielczość

Nie używaj standardowych nagłówków JWT alg ani typ w elemencie podrzędnym <Claim> elementu <AdditionalHeaders>.

Aby poprawić przykładową zasadę generowania tokena JWT pokazaną powyżej, użyj nazwy x5c w elemencie podrzędnym <Claim> elementu <AdditionalHeaders>:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='x5c'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidTypeForAdditionalHeader

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid type for additional header : policy(policy_name) claim(claim_name) type(type_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim1) type(integer).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Błąd wystąpi, jeśli typ roszczenia użyty w elemencie podrzędnym <Claim> elementu <AdditionalHeaders> w zasadach GenerateJWT nie jest jednym z tych typów:

string (domyślnie), number, boolean lub map.

Na przykład użycie typu roszczenia integer w elemencie <AdditionalHeaders> spowoduje błąd.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generate JWT, nazwę deklaracji i typ deklaracji. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, nazwa deklaracji to claim,, a typ deklaracji to integer:.

    Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim) type(integer).
    
  2. Sprawdź, czy nazwa i typ roszczenia użyte w elemencie <AdditionalClaims> w nieudanej zasadzie XML generowania JWT są zgodne z nazwą i typem roszczenia podanymi w komunikacie o błędzie w kroku 1. Na przykład poniższe zasady określają roszczenie jako claim, a typ roszczenia jako integer, co odpowiada treści komunikatu o błędzie:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalHeaders>
            <Claim name='claim' ref='reqclaim' type='integer'/>
        </AdditionalHeaders>
    </GenerateJWT>
    
  3. Jeśli typ roszczenia użyty w elemencie podrzędnym <Claim> elementu <AdditionalHeaders> nie jest jednym z tych typów:

    string (domyślnie), number, boolean lub map

    wtedy to jest przyczyną błędu.

    W przykładzie zasady Generowanie tokena JWT pokazanym powyżej typ <Claim> w elemencie <AdditionalHeaders> jest określony jako integer. Ponieważ integer nie jest obsługiwanym typem, pojawi się błąd:

    Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim) type(integer).
    

Rozdzielczość

Upewnij się, że w elemencie podrzędnym <Claim> elementu <AdditionalHeaders> używane są tylko obsługiwane typy danych string, number, boolean lub map.

Aby poprawić pokazaną powyżej zasadę generowania tokena JWT, zmień typ roszczenia na boolean:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidValueOfArrayAttribute

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid value for array attribute: policy(policy_name)claim(claim_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli wartość atrybutu tablicy w elemencie podrzędnym <Claim> elementu <AdditionalClaims> lub <AdditionalHeaders> nie jest ustawiona na true lub false.

Na przykład ustawienie wartości atrybutu tablicy jako yes w elemencie podrzędnym <Claim> elementu <AdditionalClaims> lub <AdditionalHeaders> powoduje błąd.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generate JWT i nazwę roszczenia z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa roszczenia to claim:.

    Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
    
  2. Sprawdź, czy nazwa roszczenia użyta w elemencie podrzędnym <Claim> w elemencie <AdditionalHeaders> w nieudanym pliku XML zasady Generowanie JWT jest zgodna z nazwą roszczenia podaną w komunikacie o błędzie w kroku 1. Na przykład poniższe zasady określają nazwę roszczenia jako claim, co odpowiada nazwie w komunikacie o błędzie:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='yes'/>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. Jeśli wartość atrybutu array w elemencie podrzędnym <Claim> elementu <AdditionalClaims> nie jest ustawiona na true lub false, to jest to przyczyną błędu.

    Ponieważ w powyższym przykładzie atrybut array w elemencie podrzędnym <Claim> elementu <AdditionalClaims> jest ustawiony na yes, otrzymasz błąd:

    Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
    

Rozdzielczość

Upewnij się, że wartość atrybutu tablicy w elemencie podrzędnym <Claim> elementu <AdditionalClaims> lub <AdditionalHeaders> jest ustawiona na true lub false.

Aby poprawić przykładowe zasady generowania tokena JWT pokazane powyżej, zmień wartość atrybutu tablicy na true:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidConfigurationForActionAndAlgorithm

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid configuration element for this action and algorithm Family: policy(<var>policy_name</var>) element(<var>element_name</var>) action(<var>action_name</var>) family(<var>family_name</var>).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli element <PrivateKey> jest używany z algorytmami HS Family, a element <SecretKey> jest używany z algorytmami RSA Family. Błąd wystąpi też, jeśli którykolwiek z tych warunków jest spełniony.

Na przykład użycie elementu <PrivateKey> z algorytmami HS Family powoduje ten błąd.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generate JWT, nazwę elementu i nazwę rodziny algorytmów na podstawie komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady generowania tokena JWT to JWT-Generate-HS256, nazwa elementu to PrivateKey, a rodzina algorytmów to HMAC:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
    
  2. Sprawdź, czy element i rodzina algorytmów użyte w pliku XML zasady Generate JWT, która spowodowała błąd, są zgodne z elementem i rodziną algorytmów podanymi w komunikacie o błędzie w kroku 1. Na przykład ta zasada określa element jako PrivateKey, a rodzinę algorytmów jako HMAC, co odpowiada temu, co znajduje się w komunikacie o błędzie:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <PrivateKey>
            <Password ref="private.privatekey-password"/>
    
        </PrivateKey>
            <ExpiresIn>1h</ExpiresIn>
            <Subject>monty-pythons-flying-circus</Subject>
            <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
            <Audience>fans</Audience>
            <Id/>
            <AdditionalClaims>
                <Claim name='claim' ref='reqclaim' type='string' array=tuu
        =/>
            </AdditionalClaims>
        </GenerateJWT>
    
  3. Jeśli wartość elementu <Algorithm> to HS256, ale użyto <PrivateKey>, to jest to przyczyną błędu.

    W pokazanej powyżej zasadzie Generate JWT użyto <PrivateKey>, mimo że <PrivateKey> jest ustawiony na algorytm rodziny HS256, co spowodowało błąd:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
    

Rozdzielczość

Sprawdź, czy element <PrivateKey> jest używany tylko w przypadku algorytmów RSA Family, a element <SecretKey> – tylko w przypadku algorytmów HS Family.

Aby poprawić przykładową zasadę generowania tokena JWT pokazaną powyżej, użyj <SecretKey> z zasady GenerateJWT, która używa algorytmu HS256:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidValueForElement

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid Value for element : policy(policy_name) element(element_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli wartość podana w elemencie <Algorithm> nie jest jedną z tych wartości:

HS256, HS384, HS512, RS256, RS384, RS512

Na przykład określenie wartości algorytmu jako RS128 w elemencie <Algorithm> powoduje ten błąd.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generate JWT (Generowanie tokena JWT) i nazwę elementu z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa elementu to Algorithm..

    Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
    
  2. Sprawdź XML zasady Generate JWT, które spowodowały błąd, i wartość określoną w elemencie <Algorithm>.

    Oto przykładowa zasada generowania tokena JWT:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS128</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='status' type='string'>Development</Claim>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. Sprawdź wartość podaną w elemencie <Algorithm>. Jeśli nie jest to jedna z tych wartości:

    HS256, HS384, HS512, RS256, RS384, RS512

    wtedy to jest przyczyną błędu.

    W pokazanej powyżej zasadzie Generate JWT nazwa <Algorithm> jest określona jako HS128. Ponieważ nie jest to obsługiwany algorytm, pojawi się błąd:

    Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
    

Rozdzielczość

Upewnij się, że wartość podana w elemencie <Algorithm> jest jedną z obsługiwanych wartości:

HS256, HS384, HS512, RS256, RS384, RS512

Aby poprawić pokazaną powyżej przykładową zasadę generowania tokena JWT, która używa elementu <SecretKey>, zmień wartość elementu <Algorithm> na HS25. Pamiętaj, że gdy używasz elementu <SecretKey>, możesz korzystać tylko z algorytmów HS Family.

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='status' type='string'>Development</Claim>
    </AdditionalClaims>
</GenerateJWT>

MissingConfigurationElement

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Missing configuration element : policy(policy_name) element(element_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, gdy element <PrivateKey> nie jest używany z algorytmami RSA Family w zasadzie Generate JWT. Podobnie błąd może wystąpić, jeśli element <SecretKey> nie jest używany z algorytmami HS Family w zasadach generowania JWT.

Na przykład ten błąd występuje, gdy nie używasz elementu <PrivateKey> z algorytmami RSA Family.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generowanie tokena JWT i nazwę brakującego elementu w komunikacie o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa brakującego elementu to SecretKey.

    Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
    
  2. Sprawdź plik XML zasady Generate JWT, która nie powiodła się, i upewnij się, że brakuje elementu wskazanego w komunikacie o błędzie. Jeśli go brakuje, to jest to przyczyna błędu.

    Na przykład w tych zasadach brakuje SecretKey, a użyty znak Algorithm to HS256:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Przykładowe zasady generowania JWT używają algorytmów z rodziny HS, ale brakuje w nich obowiązkowego elementu SecretKey, co powoduje błąd:

    Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
    

Rozdzielczość

Upewnij się, że w przypadku algorytmów RSA Family używany jest obowiązkowy element <PrivateKey>, a w przypadku algorytmów HS Family – obowiązkowy element <SecretKey>.

Aby poprawić przykładową zasadę generowania tokena JWT pokazaną powyżej, która używa algorytmu HS256, dodaj element <SecretKey> do zasady generowania tokena JWT:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidKeyConfiguration

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 
Invalid Key configuration : policy(policy_name).

Przykładowy komunikat o błędzie

Error Saving Revision 3
Invalid Key configuration : policy(JWT-Generate-HS256).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli w zasadzie Generowanie tokena JWT w elementach <PrivateKey> lub <SecretKey> nie jest zdefiniowany obowiązkowy element podrzędny <Value>.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generate JWT. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256.

    Invalid Key configuration : policy(JWT-Generate-HS256).
    
  2. Sprawdź plik XML zasady Generate JWT, która nie powiodła się, i upewnij się, że element podrzędny <Value> nie jest zdefiniowany w elementach <PrivateKey> ani <SecretKey>. Jeśli <Value> nie jest zdefiniowane, to jest to przyczyną błędu.

    Na przykład w tych zasadach element podrzędny <Value> nie jest zdefiniowany w elemencie <SecretKey>:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Ponieważ element podrzędny <Value> nie jest zdefiniowany w elemencie <SecretKey> zasady generowania tokena JWT, pojawia się błąd:

    Invalid Key configuration : policy(JWT-Generate-HS256).
    

Rozdzielczość

Upewnij się, że element podrzędny <Value> jest zawsze zdefiniowany w elementach <PrivateKey> lub <SecretKey> zasad generowania JWT.

Aby poprawić pokazaną powyżej zasadę Generate JWT, zdefiniuj element podrzędny <Value> w elemencie <SecretKey>, jak pokazano poniżej:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

EmptyElementForKeyConfiguration

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Empty Element for Key Configuration : policy(policy_name) element(element_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli atrybut ref w elemencie podrzędnym <Value> elementów <PrivateKey> lub <SecretKey> nie jest określony lub jest pusty.

Na przykład jeśli element podrzędny <Value> elementu <SecretKey> jest pusty, wystąpi błąd.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Generate JWT (Generowanie tokena JWT) i nazwę pustego elementu z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa pustego elementu to SecretKey/Value.

    Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
    
  2. Sprawdź XML zasad generowania tokena JWT i upewnij się, że element zidentyfikowany w kroku 1 jest pusty. Jeśli jest pusta, to jest przyczyną błędu.

    Na przykład poniższe zasady pokazują, że element podrzędny <Value> elementu <SecretKey> jest pusty:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value/>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Ponieważ element podrzędny <Value> elementu <SecretKey> w zasadach generowania tokena JWT jest pusty, pojawia się błąd:

    Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

Rozdzielczość

Upewnij się, że atrybut ref w elemencie podrzędnym <Value> elementów <PrivateKey> lub <SecretKey> jest zawsze określony i ma prefiks „private.”.

Aby poprawić przykładową zasadę generowania tokena JWT pokazaną powyżej, użyj zmiennej przepływu private.privatekey w elemencie podrzędnym <Value> elementu <SecretKey>.

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidVariableNameForSecret

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid variable name for secret : policy(policy_name) element(element_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli nazwa zmiennej przepływu określona w atrybucie ref w elemencie podrzędnym <Value> elementów <PrivateKey> lub <SecretKey> nie zawiera prefiksu prywatnego (private.).

Na przykład:

Ten błąd występuje, jeśli nazwa zmiennej przepływu jest określona jako mykey w atrybucie ref elementu podrzędnego <Value> elementu <PrivateKey>.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generate JWT i nazwę elementu z nieprawidłową nazwą zmiennej. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa elementu to SecretKey/Value.

    Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
    
  2. Sprawdź plik XML zasady Generate JWT, która nie powiodła się, i zweryfikuj nazwę zmiennej użytej w elemencie zidentyfikowanym w kroku 1. Jeśli nazwa zmiennej nie ma prefiksu private., to jest to przyczyną błędu.

    Na przykład poniższe zasady pokazują, że element podrzędny <Value> elementu <SecretKey> ma nieprawidłową nazwę zmiennej mykey:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value ref="mykey"/>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Ponieważ nazwa zmiennej określona w elemencie podrzędnym <Value> elementu <SecretKey> w zasadach Generate JWT nie ma prefiksu private., pojawia się błąd:

    Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

Rozdzielczość

Upewnij się, że atrybut ref w elemencie podrzędnym <Value> elementów <PrivateKey> lub <SecretKey> jest zawsze określony i ma prefiks private..

Aby poprawić przykładowe zasady generowania tokena JWT pokazane powyżej, użyj zmiennej przepływu private.privatekey w elemencie podrzędnym <Value> elementu <SecretKey>:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidSecretInConfig

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Specifying a secret in the configuration is invalid : policy(policy_name) element(element_name).

Przykładowy komunikat o błędzie

Error Saving Revision 2
Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli wartość (obiekt tajny) jest określona w sposób jawny w:

  • elementy podrzędne <Value> lub <Password> elementu <PrivateKey> lub
  • Element podrzędny <Value> elementu <SecretKey>

w zasadzie Generate JWT.

Na przykład ten błąd wystąpi, jeśli klucz tajny zostanie określony w sposób jawny jako abc w elemencie podrzędnym <Value> elementu <SecretKey>.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generate JWT i nazwę elementu, w którym klucz tajny jest określony wprost. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa elementu to SecretKey/Value.

    Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
    
  2. Sprawdź, czy w nieudanym pliku XML zasad generowania tokena JWT w elemencie zidentyfikowanym w kroku 1 jest wyraźnie określony klucz tajny. Jeśli jest określony wprost, to jest przyczyną błędu.

    Na przykład poniższe zasady pokazują, że klucz tajny został określony w elemencie podrzędnym <Value> elementu <SecretKey>:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value>abc</Value>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Ponieważ klucz tajny jest określony bezpośrednio w elemencie podrzędnym <Value> elementu <SecretKey> w zasadach generowania tokena JWT, pojawia się błąd:

    Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

Rozdzielczość

Upewnij się, że wartość jest zawsze określana jako zmienna przepływu w elemencie podrzędnym <Value> elementów <PrivateKey> lub <SecretKey>.

Aby poprawić przykładowe zasady generowania tokena JWT pokazane powyżej, użyj zmiennej przepływu private.secretkey w atrybucie ref elementu podrzędnego <Value> elementu <SecretKey>:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <ExpiresIn>1h</ExpiresIn>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidTimeFormat

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

Error Saving Revision 2
Invalid Time format: policy(policy_name) element(element_name).

Przykładowy komunikat o błędzie

Error Saving Revision 3
Invalid Time format: policy(JWT-Generate-HS256) element(NotBefore).

Przykładowy zrzut ekranu

W interfejsie Edge zobaczysz okno dialogowe z błędem:

Przyczyna

Ten błąd występuje, jeśli wartość podana w elemencie <NotBefore> nie jest w jednym z obsługiwanych formatów:

sortable, RFC 1123, RFC 850, ANCI-C

Jeśli na przykład wartość podana w polu <NotBefore> to 20-JUN-1990 08:03, czyli format nieobsługiwany, wystąpi ten błąd.

<NotBefore>20-JUN-1990 08:03:00:21-07:00</NotBefore>

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zasady Generowanie tokena JWT i nazwę elementu, który ma nieprawidłowy format czasu. Na przykład w tym komunikacie o błędzie nazwa zasady Generate JWT to JWT-Generate-HS256, a nazwa elementu to NotBefore.

    Invalid Time format: policy(JWT-Generate-HS256) element(NotBefore).
    
  2. Sprawdź plik XML zasady Generate JWT, która nie powiodła się, i zweryfikuj format czasu użyty w elemencie zidentyfikowanym w kroku 1. Jeśli element nie używa żadnego z obsługiwanych formatów:

    sortable, RFC 1123, RFC 850, ANCI-C

    wtedy to jest przyczyną błędu.

    Na przykład poniższe zasady pokazują, że element podrzędny <NotBefore> używa nieobsługiwanego formatu czasu:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <NotBefore>20-JUN-1990 08:03:00:21-07:00</NotBefore>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    Element <NotBefore> w zasadach Generate JWT nie używa żadnego z obsługiwanych formatów czasu, więc pojawia się błąd:

    Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

Rozdzielczość

Sprawdź, czy wartość podana w elemencie <NotBefore> jest w jednym z obsługiwanych formatów:

sortable, RFC 1123, RFC 850, ANCI-C

Aby poprawić przykładowe zasady generowania tokena JWT, zmień datę w elemencie <NotBefore>, aby używać formatu sortable, jak pokazano poniżej:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <ExpiresIn>1h</ExpiresIn>
    <NotBefore>2018-08-14T11:00:21-07:00</NotBefore>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>