Google, Siyah topluluklar için ırksal eşitliği geliştirmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Hesaplar Arası Koruma ile kullanıcı hesaplarını koruyun

Uygulamanız, kullanıcıların Google kullanarak hesaplarında oturum açmalarına izin veriyorsa, Hesaplar Arası Koruma hizmeti tarafından sağlanan güvenlik olayı bildirimlerini dinleyerek ve bunlara yanıt vererek bu paylaşılan kullanıcıların hesaplarının güvenliğini artırabilirsiniz.

Bu bildirimler, kullanıcılarınızın Google Hesaplarındaki önemli değişiklikler konusunda sizi uyarır ve bu değişiklikler genellikle uygulamanızdaki hesapları üzerinde de güvenlik etkilerine neden olabilir. Örneğin, bir kullanıcının Google Hesabı ele geçirilirse, e-posta hesabı kurtarma veya tek oturum açma kullanımıyla kullanıcının uygulamanızdaki hesabının tehlikeye atılmasına neden olabilir.

Bu tür olayların risk potansiyelini azaltmanıza yardımcı olmak için Google, güvenlik olayı jetonları adı verilen hizmet nesnelerinizi gönderir. Bu belirteçler, yalnızca güvenlik olayının türü ve meydana geldiği zaman ve etkilenen kullanıcının tanımlayıcısı gibi çok az bilgi açığa çıkarır, ancak bunları yanıt olarak uygun eylemi gerçekleştirmek için kullanabilirsiniz. Örneğin, bir kullanıcının Google Hesabının güvenliği ihlal edildiyse, o kullanıcı için Google ile Oturum Açma özelliğini geçici olarak devre dışı bırakabilir ve hesap kurtarma e-postalarının kullanıcının Gmail adresine gönderilmesini önleyebilirsiniz.

Hesaplar Arası Koruma, OpenID Foundation'da geliştirilen RISC standardına dayanmaktadır.

Genel Bakış

Uygulamanız veya hizmetinizle Hesaplar Arası Korumayı kullanmak için aşağıdaki görevleri tamamlamanız gerekir:

  1. API Console'da projenizi ayarlayın.

  2. Google'ın güvenlik etkinliği jetonlarını göndereceği bir etkinlik alıcı uç noktası oluşturun. Bu uç nokta, aldığı belirteçleri doğrulamaktan ve ardından güvenlik olaylarına seçtiğiniz şekilde yanıt vermekten sorumludur.

  3. Güvenlik etkinliği jetonlarını almaya başlamak için uç noktanızı Google'a kaydedin.

Önkoşul

Yalnızca hizmetinize profil bilgilerine veya e-posta adreslerine erişme izni veren Google kullanıcıları için güvenlik etkinliği jetonları alırsınız. profile veya email kapsamlarını talep ederek bu izni alırsınız. Google Oturum Açma SDK'ları varsayılan olarak bu kapsamları ister, ancak varsayılan ayarları kullanmıyorsanız veya Google'ın OpenID Connect uç noktasına doğrudan erişiyorsanız, bu kapsamlardan en az birini istediğinizden emin olun.

API Console'da bir proje oluşturun

Güvenlik olay belirteçlerini almaya başlamadan önce, bir hizmet hesabı oluşturmanız ve API Console projenizde RISC API'sini etkinleştirmeniz gerekir. Uygulamanızda Google ile Oturum Açma gibi Google hizmetlerine erişmek için kullandığınız aynı API Console projesini kullanmanız gerekir.

Hizmet hesabını oluşturmak için:

  1. API Console Credentials page'u açın. İstendiğinde, uygulamanızda Google hizmetlerine erişmek için kullandığınız API Console projesini seçin.

  2. Kimlik bilgileri oluştur> Hizmet hesabı anahtarı'nı tıklayın .

  3. Düzenleyici rolüyle yeni bir hizmet hesabı oluşturun.

    JSON anahtar türünü seçin ve ardından Oluştur'u tıklayın. Anahtar oluşturulduğunda, hizmet hesabı kimlik bilgilerinizi içeren bir JSON dosyası indireceksiniz. Bu dosyayı güvenli bir yerde saklayın, ancak aynı zamanda olay alıcısı uç noktanız için erişilebilir.

Projenizin Kimlik Bilgileri sayfasındayken, Google ile Oturum Açma için kullandığınız istemci kimliklerini de not edin. Tipik olarak, desteklediğiniz her platform için bir müşteri kimliğiniz vardır. Bir sonraki bölümde açıklandığı gibi, güvenlik olayı belirteçlerini doğrulamak için bu istemci kimliklerine ihtiyacınız olacak.

RISC API'yi etkinleştirmek için:

  1. API Console'da RISC API sayfasını açın. Google hizmetlerine erişmek için kullandığınız projenin hala seçili olduğundan emin olun.

  2. RISC Koşullarını okuyun ve gereksinimleri anladığınızdan emin olun.

    API'yi bir kuruluşa ait bir proje için etkinleştiriyorsanız, kuruluşunuzu RISC Koşullarına bağlama yetkisine sahip olduğunuzdan emin olun.

  3. Yalnızca RISC Koşullarını kabul ediyorsanız Etkinleştir'i tıklayın.

Bir olay alıcısı uç noktası oluşturun

Google'dan güvenlik olayı bildirimlerini almak için HTTPS POST isteklerini işleyen bir HTTPS uç noktası oluşturursunuz. Bu uç noktayı kaydettikten sonra (aşağıya bakın), Google, uç noktaya güvenlik etkinliği jetonları adı verilen şifreli olarak imzalanmış dizeler yayınlamaya başlayacaktır. Güvenlik olay belirteçleri, güvenlikle ilgili tek bir olay hakkında bilgi içeren imzalı JWT'lerdir.

Uç noktanızda aldığınız her güvenlik olayı belirteci için önce belirteci doğrulayın ve kodunu çözün, ardından hizmetinize uygun şekilde güvenlik olayını işleyin. Aşağıdaki bölümler bu görevleri açıklamaktadır:

1. Güvenlik olayı jetonunun kodunu çözün ve doğrulayın

Güvenlik olayı belirteçleri belirli bir JWT türü olduğundan , bunları çözmek ve doğrulamak için jwt.io'da listelenenler gibi herhangi bir JWT kitaplığını kullanabilirsiniz. Hangi kitaplığı kullanırsanız kullanın, belirteç doğrulama kodunuz aşağıdakileri yapmalıdır:

  1. https://accounts.google.com/.well-known/risc-configuration bulabileceğiniz Google'ın RISC yapılandırma belgesinden Hesaplar Arası Koruma yayıncı tanımlayıcısını ( issuer ) ve imzalama anahtarı sertifika URI'sini ( jwks_uri ) alın.
  2. Seçtiğiniz JWT kitaplığını kullanarak, güvenlik olayı belirtecinin başlığından imzalama anahtarı kimliğini alın.
  3. Google'ın imzalama anahtarı sertifika belgesinden, önceki adımda aldığınız anahtar kimliğine sahip genel anahtarı alın. Belge, aradığınız kimliğe sahip bir anahtar içermiyorsa, büyük olasılıkla güvenlik olayı belirteci geçersizdir ve uç noktanız 400 HTTP hatası döndürmelidir.
  4. Seçtiğiniz JWT kitaplığını kullanarak aşağıdakileri doğrulayın:
    • Güvenlik olayı belirteci, önceki adımda aldığınız genel anahtar kullanılarak imzalanır.
    • Jetonun aud iddiası, uygulamalarınızın istemci kimliklerinden biridir.
    • Belirtecin iss talebi, RISC keşif belgesinden aldığınız yayıncı kimliğiyle eşleşir. Güvenlik olayı jetonları geçmiş olayları temsil ettiği ve bu nedenle sona exp için jetonun son kullanma tarihini (son kullanma tarihi) doğrulamanıza gerek olmadığını unutmayın.

Örneğin:

Java

Java-jwt ve jwks-rsa-java kullanarak :

public DecodedJWT validateSecurityEventToken(String token) {
    DecodedJWT jwt = null;
    try {
        // In a real implementation, get these values from
        // https://accounts.google.com/.well-known/risc-configuration
        String issuer = "accounts.google.com";
        String jwksUri = "https://www.googleapis.com/oauth2/v3/certs";

        // Get the ID of the key used to sign the token.
        DecodedJWT unverifiedJwt = JWT.decode(token);
        String keyId = unverifiedJwt.getKeyId();

        // Get the public key from Google.
        JwkProvider googleCerts = new UrlJwkProvider(new URL(jwksUri), null, null);
        PublicKey publicKey = googleCerts.get(keyId).getPublicKey();

        // Verify and decode the token.
        Algorithm rsa = Algorithm.RSA256((RSAPublicKey) publicKey, null);
        JWTVerifier verifier = JWT.require(rsa)
                .withIssuer(issuer)
                // Get your apps' client IDs from the API console:
                // https://console.developers.google.com/apis/credentials?project=_
                .withAudience("123456789-abcedfgh.apps.googleusercontent.com",
                              "123456789-ijklmnop.apps.googleusercontent.com",
                              "123456789-qrstuvwx.apps.googleusercontent.com")
                .acceptLeeway(Long.MAX_VALUE)  // Don't check for expiration.
                .build();
        jwt = verifier.verify(token);
    } catch (JwkException e) {
        // Key not found. Return HTTP 400.
    } catch (InvalidClaimException e) {

    } catch (JWTDecodeException exception) {
        // Malformed token. Return HTTP 400.
    } catch (MalformedURLException e) {
        // Invalid JWKS URI.
    }
    return jwt;
}

Python

import json
import jwt       # pip install pyjwt
import requests  # pip install requests

def validate_security_token(token, client_ids):
    # Get Google's RISC configuration.
    risc_config_uri = 'https://accounts.google.com/.well-known/risc-configuration'
    risc_config = requests.get(risc_config_uri).json()

    # Get the public key used to sign the token.
    google_certs = requests.get(risc_config['jwks_uri']).json()
    jwt_header = jwt.get_unverified_header(token)
    key_id = jwt_header['kid']
    public_key = None
    for key in google_certs['keys']:
        if key['kid'] == key_id:
            public_key = jwt.algorithms.RSAAlgorithm.from_jwk(json.dumps(key))
    if not public_key:
        raise Exception('Public key certificate not found.')
        # In this situation, return HTTP 400

    # Decode the token, validating its signature, audience, and issuer.
    try:
        token_data = jwt.decode(token, public_key, algorithms='RS256',
                                options={'verify_exp': False},
                                audience=client_ids, issuer=risc_config['issuer'])
    except:
        raise
        # Validation failed. Return HTTP 400.
    return token_data

# Get your apps' client IDs from the API console:
# https://console.developers.google.com/apis/credentials?project=_
client_ids = ['123456789-abcedfgh.apps.googleusercontent.com',
              '123456789-ijklmnop.apps.googleusercontent.com',
              '123456789-qrstuvwx.apps.googleusercontent.com']
token_data = validate_security_token(token, client_ids)

Belirteç geçerliyse ve kodu başarıyla çözülmüşse, HTTP durumu 202'yi döndürün. Ardından, belirteç tarafından belirtilen güvenlik olayını işleyin.

2. Güvenlik olaylarını yönetin

Kodu çözüldüğünde, bir güvenlik olayı belirteci aşağıdaki örneğe benzer:

{
  "iss": "https://accounts.google.com/",
  "aud": "123456789-abcedfgh.apps.googleusercontent.com",
  "iat": 1508184845,
  "jti": "756E69717565206964656E746966696572",
  "events": {
    "https://schemas.openid.net/secevent/risc/event-type/account-disabled": {
      "subject": {
        "subject_type": "iss-sub",
        "iss": "https://accounts.google.com/",
        "sub": "7375626A656374"
      },
      "reason": "hijacking"
    }
  }
}

iss ve aud iddiaları, jetonu veren kuruluşu (Google) ve jetonun hedeflenen alıcısını (hizmetiniz) belirtir. Bu iddiaları önceki adımda doğruladınız.

jti iddiası, tek bir güvenlik olayını tanımlayan ve akış için benzersiz olan bir dizedir. Bu tanımlayıcıyı, hangi güvenlik olaylarını aldığınızı takip etmek için kullanabilirsiniz.

events iddiası, belirtecin temsil ettiği güvenlik olayıyla ilgili bilgileri içerir. Bu iddia, bir olay türü tanımlayıcısından bir subject talebine, bu olayın ilgili olduğu kullanıcıyı ve mevcut olabilecek olayla ilgili her türlü ek detayı belirten bir eşleştirmedir.

subject iddiası, belirli bir kullanıcıyı, kullanıcının benzersiz Google Hesabı Kimliğiyle ( sub ) tanımlar. Bu kimlik, Google ile Oturum Açma tarafından üretilen kimlik jetonlarında bulunan tanımlayıcıyla aynıdır. Ne zaman subject_type iddianın olduğu id_token_claims , aynı zamanda bir içerebilir email kullanıcının e-posta adresi ile alan.

Belirtilen kullanıcının hesabında olay türü için uygun eylemi gerçekleştirmek için events talebindeki bilgileri kullanın.

Desteklenen olay türleri

Hesaplar Arası Koruma, aşağıdaki güvenlik olayları türlerini destekler:

Etkinlik tipi Öznitellikler Nasıl cevap verilir
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked Gerekli : O anda açık olan oturumlarını sonlandırarak kullanıcının hesabını yeniden güven altına alın.
https://schemas.openid.net/secevent/oauth/event-type/tokens-revoked

Gerekli : Jeton Google ile Oturum Açma içinse, o anda açık olan oturumlarını sonlandırın. Ek olarak, kullanıcıya alternatif bir oturum açma yöntemi ayarlamasını önermek isteyebilirsiniz.

Önerilen : Jeton, diğer Google API'lerine erişim içinse, kullanıcının sakladığınız OAuth jetonlarından herhangi birini silin.

https://schemas.openid.net/secevent/risc/event-type/account-disabled reason=hijacking ,
reason=bulk-account

Gerekli : Hesabın devre dışı bırakılmasının nedeni hijacking , o anda açık olan oturumlarını sonlandırarak kullanıcının hesabını yeniden güven altına alın.

Önerilen : Hesabın devre dışı bırakılmasının nedeni bulk-account , kullanıcının hizmetinizdeki etkinliğini analiz edin ve uygun takip eylemlerini belirleyin.

Önerilen : Herhangi bir neden belirtilmemişse, kullanıcı için Google ile Oturum Açma özelliğini devre dışı bırakın ve kullanıcının Google Hesabı ile ilişkili e-posta adresini (genellikle bir Gmail hesabı) kullanarak hesap kurtarmayı devre dışı bırakın. Kullanıcıya alternatif bir oturum açma yöntemi sunun.

https://schemas.openid.net/secevent/risc/event-type/account-enabled Önerilen : Kullanıcı için Google ile Oturum Açmayı yeniden etkinleştirin ve kullanıcının Google Hesabı e-posta adresiyle hesap kurtarmayı yeniden etkinleştirin.
https://schemas.openid.net/secevent/risc/event-type/account-purged Önerilen : Kullanıcının hesabını silin veya ona alternatif bir oturum açma yöntemi sağlayın.
https://schemas.openid.net/secevent/risc/event-type/account-credential-change-required Önerilen : Hizmetinizde şüpheli etkinlik olup olmadığına bakın ve uygun işlemi yapın.
https://schemas.openid.net/secevent/risc/event-type/verification durum = state Önerilen : Bir test jetonunun alındığını günlüğe kaydedin.

Yinelenen ve gözden kaçan etkinlikler

Hesaplar Arası Koruma, teslim edilmediğini düşündüğü olayları yeniden sunmaya çalışacaktır. Bu nedenle, bazen aynı olayı birden çok kez alabilirsiniz. Bu, kullanıcılarınızı rahatsız eden tekrarlanan eylemlere neden olabilirse, jti için jti iddiasını (bir olay için benzersiz bir tanımlayıcı olan) kullanmayı düşünün. Tekilleştirilmiş veri akışını yürütmenize yardımcı olabilecek Google Cloud Dataflow gibi harici araçlar vardır.

Olayların sınırlı yeniden denemelerle teslim edildiğini, dolayısıyla alıcınız uzun bir süre çalışmadığında bazı olayları kalıcı olarak kaçırabileceğinizi unutmayın.

Alıcınızı kaydedin

Güvenlik olaylarını almaya başlamak için, alıcı uç noktanızı RISC API kullanarak kaydedin. RISC API'ye yapılan çağrılara bir yetkilendirme jetonu eşlik etmelidir.

Yalnızca uygulamanızın kullanıcıları için güvenlik olayları alacaksınız, bu nedenle aşağıda açıklanan adımlar için ön koşul olarak GCP projenizde yapılandırılmış bir OAuth izin ekranına sahip olmanız gerekir.

1. Bir yetkilendirme jetonu oluşturun

RISC API'si için bir yetkilendirme jetonu oluşturmak üzere aşağıdaki taleplerle bir JWT oluşturun:

{
  "iss": SERVICE_ACCOUNT_EMAIL,
  "sub": SERVICE_ACCOUNT_EMAIL,
  "aud": "https://risc.googleapis.com/google.identity.risc.v1beta.RiscManagementService",
  "iat": CURRENT_TIME,
  "exp": CURRENT_TIME + 3600
}

Hizmet hesabı anahtarını oluşturduğunuzda indirdiğiniz JSON dosyasında bulabileceğiniz hizmet hesabınızın özel anahtarını kullanarak JWT'yi imzalayın.

Örneğin:

Java

Java-jwt ve Google'ın kimlik doğrulama kitaplığını kullanarak :

public static String makeBearerToken() {
    String token = null;
    try {
        // Get signing key and client email address.
        FileInputStream is = new FileInputStream("your-service-account-credentials.json");
        ServiceAccountCredentials credentials =
               (ServiceAccountCredentials) GoogleCredentials.fromStream(is);
        PrivateKey privateKey = credentials.getPrivateKey();
        String keyId = credentials.getPrivateKeyId();
        String clientEmail = credentials.getClientEmail();

        // Token must expire in exactly one hour.
        Date issuedAt = new Date();
        Date expiresAt = new Date(issuedAt.getTime() + 3600000);

        // Create signed token.
        Algorithm rsaKey = Algorithm.RSA256(null, (RSAPrivateKey) privateKey);
        token = JWT.create()
                .withIssuer(clientEmail)
                .withSubject(clientEmail)
                .withAudience("https://risc.googleapis.com/google.identity.risc.v1beta.RiscManagementService")
                .withIssuedAt(issuedAt)
                .withExpiresAt(expiresAt)
                .withKeyId(keyId)
                .sign(rsaKey);
    } catch (ClassCastException e) {
        // Credentials file doesn't contain a service account key.
    } catch (IOException e) {
        // Credentials file couldn't be loaded.
    }
    return token;
}

Python

import json
import time

import jwt  # pip install pyjwt

def make_bearer_token(credentials_file):
    with open(credentials_file) as service_json:
        service_account = json.load(service_json)
        issuer = service_account['client_email']
        subject = service_account['client_email']
        private_key_id = service_account['private_key_id']
        private_key = service_account['private_key']
    issued_at = int(time.time())
    expires_at = issued_at + 3600
    payload = {'iss': issuer,
               'sub': subject,
               'aud': 'https://risc.googleapis.com/google.identity.risc.v1beta.RiscManagementService',
               'iat': issued_at,
               'exp': expires_at}
    encoded = jwt.encode(payload, private_key, algorithm='RS256',
                         headers={'kid': private_key_id})
    return encoded

auth_token = make_bearer_token('your-service-account-credentials.json')

Bu yetkilendirme simgesi, bir saat boyunca RISC API çağrıları yapmak için kullanılabilir. Belirtecin süresi dolduğunda, RISC API çağrıları yapmaya devam etmek için yeni bir tane oluşturun.

2. RISC akış yapılandırma API'sini çağırın

Artık bir yetkilendirme jetonunuz olduğuna göre, alıcı uç noktanızı kaydetme dahil olmak üzere projenizin güvenlik olay akışını yapılandırmak için RISC API'yi kullanabilirsiniz.

Bunu yapmak için, https://risc.googleapis.com/v1beta/stream:update , alıcınızın uç noktanızı ve ilgilendiğiniz güvenlik olaylarının türlerini belirterek bir HTTPS POST isteğinde bulunun:

POST /v1beta/stream:update HTTP/1.1
Host: risc.googleapis.com
Authorization: Bearer AUTH_TOKEN

{
  "delivery": {
    "delivery_method":
      "https://schemas.openid.net/secevent/risc/delivery-method/push",
    "url": RECEIVER_ENDPOINT
  },
  "events_requested": [
    SECURITY_EVENT_TYPES
  ]
}

Örneğin:

Java

public static void configureEventStream(final String receiverEndpoint,
                                        final List<String> eventsRequested,
                                        String authToken) throws IOException {
    ObjectMapper jsonMapper = new ObjectMapper();
    String streamConfig = jsonMapper.writeValueAsString(new Object() {
        public Object delivery = new Object() {
            public String delivery_method =
                    "https://schemas.openid.net/secevent/risc/delivery-method/push";
            public String url = receiverEndpoint;
        };
        public List<String> events_requested = eventsRequested;
    });

    HttpPost updateRequest = new HttpPost("https://risc.googleapis.com/v1beta/stream:update");
    updateRequest.addHeader("Content-Type", "application/json");
    updateRequest.addHeader("Authorization", "Bearer " + authToken);
    updateRequest.setEntity(new StringEntity(streamConfig));

    HttpResponse updateResponse = new DefaultHttpClient().execute(updateRequest);
    Header[] responseContentTypeHeaders = updateResponse.getHeaders("Content-Type");
    StatusLine responseStatus = updateResponse.getStatusLine();
    int statusCode = responseStatus.getStatusCode();
    HttpEntity entity = updateResponse.getEntity();
    // Now handle response
}

// ...

configureEventStream(
        "https://your-service.example.com/security-event-receiver",
        Arrays.asList(
                "https://schemas.openid.net/secevent/risc/event-type/account-credential-change-required",
                "https://schemas.openid.net/secevent/risc/event-type/account-disabled"),
        authToken);

Python

import requests

def configure_event_stream(auth_token, receiver_endpoint, events_requested):
    stream_update_endpoint = 'https://risc.googleapis.com/v1beta/stream:update'
    headers = {'Authorization': 'Bearer {}'.format(auth_token)}
    stream_cfg = {'delivery': {'delivery_method': 'https://schemas.openid.net/secevent/risc/delivery-method/push',
                               'url': receiver_endpoint},
                  'events_requested': events_requested}
    response = requests.post(stream_update_endpoint, json=stream_cfg, headers=headers)
    response.raise_for_status()  # Raise exception for unsuccessful requests

configure_event_stream(auth_token, 'https://your-service.example.com/security-event-receiver',
                       ['https://schemas.openid.net/secevent/risc/event-type/account-credential-change-required',
                        'https://schemas.openid.net/secevent/risc/event-type/account-disabled'])

İstek HTTP 200 döndürürse, olay akışı başarıyla yapılandırılmıştır ve alıcı uç noktanız güvenlik olay belirteçlerini almaya başlamalıdır. Sonraki bölümde, her şeyin birlikte doğru şekilde çalıştığını doğrulamak için akış yapılandırmanızı ve uç noktanızı nasıl test edebileceğiniz açıklanmaktadır.

Mevcut akış yapılandırmanızı alın ve güncelleyin

Gelecekte akış yapılandırmanızı değiştirmek isterseniz, mevcut akış yapılandırmasını almak için https://risc.googleapis.com/v1beta/stream yetkili bir GET isteği göndererek yanıt gövdesini değiştirerek bunu yapabilirsiniz. , ve ardından değiştirilen yapılandırmanın yukarıda açıklandığı gibi https://risc.googleapis.com/v1beta/stream:update yeniden YAYINLANMASI.

Olay akışını durdurun ve devam ettirin

Google'dan gelen olay akışını durdurmanız gerekirse, istek gövdesinde { "status": "disabled" } ile https://risc.googleapis.com/v1beta/stream/status:update için yetkili bir POST isteğinde bulunun. Akış devre dışı bırakılırken Google, etkinlikleri uç noktanıza göndermez ve gerçekleştiğinde güvenlik olaylarını arabelleğe almaz. Olay akışını yeniden etkinleştirmek için aynı uç noktaya POST { "status": "enabled" } .

3. İsteğe bağlı: Akış yapılandırmanızı test edin

Etkinlik akışınız aracılığıyla bir doğrulama jetonu göndererek akış yapılandırmanızın ve alıcı uç noktanızın birlikte doğru şekilde çalıştığını doğrulayabilirsiniz. Bu simge, belirtecin uç noktanızda alındığını doğrulamak için kullanabileceğiniz benzersiz bir dize içerebilir.

Bir doğrulama jetonu istemek için https://risc.googleapis.com/v1beta/stream:verify yetkili bir HTTPS POST isteğinde https://risc.googleapis.com/v1beta/stream:verify . İsteğin gövdesinde, bazı tanımlayıcı dizeler belirtin:

{
  "state": "ANYTHING"
}

Örneğin:

Java

public static void testEventStream(final String stateString,
                                   String authToken) throws IOException {
    ObjectMapper jsonMapper = new ObjectMapper();
    String json = jsonMapper.writeValueAsString(new Object() {
        public String state = stateString;
    });

    HttpPost updateRequest = new HttpPost("https://risc.googleapis.com/v1beta/stream:verify");
    updateRequest.addHeader("Content-Type", "application/json");
    updateRequest.addHeader("Authorization", "Bearer " + authToken);
    updateRequest.setEntity(new StringEntity(json));

    HttpResponse updateResponse = new DefaultHttpClient().execute(updateRequest);
    Header[] responseContentTypeHeaders = updateResponse.getHeaders("Content-Type");
    StatusLine responseStatus = updateResponse.getStatusLine();
    int statusCode = responseStatus.getStatusCode();
    HttpEntity entity = updateResponse.getEntity();
    // Now handle response
}

// ...

testEventStream("Test token requested at " + new Date().toString(), authToken);

Python

import requests
import time

def test_event_stream(auth_token, nonce):
    stream_verify_endpoint = 'https://risc.googleapis.com/v1beta/stream:verify'
    headers = {'Authorization': 'Bearer {}'.format(auth_token)}
    state = {'state': nonce}
    response = requests.post(stream_verify_endpoint, json=state, headers=headers)
    response.raise_for_status()  # Raise exception for unsuccessful requests

test_event_stream(auth_token, 'Test token requested at {}'.format(time.ctime()))

İstek başarılı olursa, doğrulama jetonu kaydettiğiniz uç noktaya gönderilecektir. Daha sonra, örneğin, uç noktanız doğrulama jetonlarını yalnızca günlüğe kaydederek işliyorsa, jetonun alındığını doğrulamak için günlüklerinizi inceleyebilirsiniz.

Hata kodu referansı

Aşağıdaki hatalar RISC API tarafından döndürülebilir:

Hata kodu Hata mesajı Önerilen eylemler
400 Akış yapılandırması $ fieldname alanını içermelidir. Https://risc.googleapis.com/v1beta/stream:update uç noktasına isteğiniz geçersiz veya ayrıştırılamaz. Lütfen isteğinize $ fieldname ekleyin.
401 Yetkisiz. Yetkilendirme başarısız oldu. İstekle birlikte bir yetkilendirme jetonu eklediğinizden ve jetonun geçerli olduğundan ve süresinin dolmadığından emin olun.
403 Teslim uç noktası bir HTTPS URL'si olmalıdır. Teslimat uç noktanız (yani, RISC olaylarının teslim edilmesini beklediğiniz uç nokta) HTTPS olmalıdır. RISC olaylarını HTTP URL'lerine göndermiyoruz.
403 Mevcut akış yapılandırması, RISC için spesifikasyonla uyumlu teslim yöntemine sahip değildir. Google Cloud projenizin zaten bir RISC yapılandırması olmalıdır. Firebase kullanıyorsanız ve Google ile Oturum Açma özelliğini etkinleştirdiyseniz, Firebase projeniz için RISC'yi yönetecektir; özel bir konfigürasyon oluşturamazsınız. Firebase projeniz için Google Oturum Açma kullanmıyorsanız, lütfen devre dışı bırakın ve bir saat sonra tekrar güncellemeyi deneyin.
403 Proje bulunamadı. Doğru proje için doğru hizmet hesabını kullandığınızdan emin olun. Silinmiş bir projeyle ilişkili bir hizmet hesabı kullanıyor olabilirsiniz. Bir projeyle ilişkili tüm hizmet hesaplarını nasıl göreceğinizi öğrenin.
403 Hizmet hesabının, projenizde düzenleyici izinlerine sahip olması gerekir. Projenizin Google Cloud Platform konsoluna gidin ve bu talimatları izleyerek çağrı düzenleyicisine / sahibine projenize izin veren hizmet hesabına izin verin.
403 Akış yönetimi API'leri yalnızca bir hizmet hesabı tarafından çağrılmalıdır. Google API'lerini bir hizmet hesabıyla nasıl çağırabileceğinizle ilgili daha fazla bilgiyi burada bulabilirsiniz .
403 Teslim uç noktası, projenizin hiçbir etki alanına ait değil. Her projenin bir dizi yetkili alan adı vardır. Teslimat uç noktanız (yani, RISC olaylarının teslim edilmesini beklediğiniz uç nokta) bunlardan birinde barındırılmıyorsa, uç noktanın etki alanını bu kümeye eklemenizi istiyoruz.
403 Bu API'yi kullanmak için projenizde en az bir OAuth istemcisi yapılandırılmış olmalıdır. RISC yalnızca Google ile Oturum Açmayı destekleyen bir uygulama oluşturduğunuzda çalışır. Bu bağlantı bir OAuth istemcisi gerektirir. Projenizde OAuth istemcisi yoksa, muhtemelen RISC sizin için yararlı olmayacaktır. Google'ın API'larımız için OAuth kullanımı hakkında daha fazla bilgi edinin.
403

Desteklenmeyen durum.

Geçersiz durum.

Şu anda yalnızca " enabled " ve " disabled " akış durumlarını enabled .
404

Projede RISC yapılandırması yok.

Projede mevcut RISC yapılandırması yok, durum güncellenemez.

Yeni bir akış yapılandırması oluşturmak için https://risc.googleapis.com/v1beta/stream:update uç noktasını arayın.
4XX / 5XX Durum güncellenemiyor. Daha fazla bilgi için ayrıntılı hata mesajını kontrol edin.

Jeton kapsamlarına erişim

RISC API kimlik doğrulaması için erişim belirteçlerini kullanmaya karar verirseniz, bunlar uygulamanızın talep etmesi gereken kapsamlardır:

Uç nokta Dürbün
https://risc.googleapis.com/v1beta/stream/status https://www.googleapis.com/auth/risc.status.readonly VEYA https://www.googleapis.com/auth/risc.status.readwrite
https://risc.googleapis.com/v1beta/stream/status:update https://www.googleapis.com/auth/risc.status.readwrite
https://risc.googleapis.com/v1beta/stream https://www.googleapis.com/auth/risc.configuration.readonly VEYA https://www.googleapis.com/auth/risc.configuration.readwrite
https://risc.googleapis.com/v1beta/stream:update https://www.googleapis.com/auth/risc.configuration.readwrite
https://risc.googleapis.com/v1beta/stream:verify https://www.googleapis.com/auth/risc.verify

Yardıma mı ihtiyacınız var?

Öncelikle, hata kodu referans bölümümüze bakın. Hala sorularınız varsa bunları #SecEvents etiketiyle Stack Overflow'da yayınlayın .