Giyilebilir cihazlarda kimlik doğrulama

Wear OS uygulamaları, tamamlayıcı uygulama olmadan bağımsız olarak çalışabilir. Bunun anlamı, Wear OS uygulamasının erişim sırasında kimlik doğrulamasını kendi başına yönetmesi gerekiyor bulmasıdır. Ancak saatin ekran boyutu ve boyutu giriş özellikleri, bir Wear OS uygulamasının kullanabileceği kimlik doğrulama seçeneklerini sınırlandırır.

Bu kılavuzda, Wear OS uygulamaları için önerilen kimlik doğrulama yöntemleri ele alınmıştır: uygulamanın kullanım alanına uygun olmayan alternatiflere de değineceğiz.

İyi bir oturum açma deneyimi tasarlama hakkında daha fazla bilgi edinmek için Oturum açma kullanıcı deneyimi rehberini inceleyin.

Misafir modu

Tüm işlevler için kimlik doğrulaması istemeyin. Bunun yerine mümkün olduğunca çok ve oturum açmadan da kullanıcıya ulaştırır.

Kullanıcılar mobil cihaz kullanmadan Wear uygulamanızı keşfedip yükleyebilir o yüzden bir hesabı olmayabilir ve uygulamanın hangi tekliflerdir. Misafir modu işlevinin, uygulamanızın özelliklerini doğru bir şekilde sergilediğinden emin olun.

Bazı cihazların kilidi daha uzun süre açık kalabilir

Wear OS 5 veya sonraki sürümleri çalıştıran desteklenen cihazlarda sistem, Kullanıcı cihazı bileğine takıyordur. Kullanıcı bileğini kapatırsa sonra cihazı bilekten çıkarırsa sistem, cihazın kilidinin normalde açılacağından daha uzun süre kilidinin açılmasına neden olabilir.

Uygulamanız daha yüksek bir güvenlik düzeyi gerektiriyorsa (ör. gizli veya hassas olabilecek veriler içeriyor. Öncelikle bilek algılama özelliğinin etkin:

val wristDetectionEnabled =
        isWristDetectionAutoLockingEnabled(applicationContext)

Bu yöntemin döndürülen değeri false ise kullanıcıdan hesabınıza eklemeniz gerekir.

Önerilen kimlik doğrulama yöntemleri

Bağımsız Wear OS uygulamalarının aşağıdakileri yapmasına izin vermek için aşağıdaki kimlik doğrulama yöntemlerini kullanın: Kullanıcı kimlik doğrulama bilgilerini alma.

Jetonları veri katmanını kullanarak iletme

Telefon tamamlayıcı uygulaması, kimlik doğrulama verilerini Wear OS uygulamasına güvenli bir şekilde aktarabilir ya da Giyilebilir Veri Katmanı'nı kullanarak. Kimlik bilgilerini ileti veya veri öğesi olarak aktarın.

Bu tür kimlik doğrulama genellikle kullanıcının herhangi bir işlem yapmasını gerektirmez. Ancak, oturum açtığı konusunda kullanıcıya bilgi vermeden kimlik doğrulama gerçekleştirmek. Şunları yapabilirsiniz: kullanıcıya hesabını kapatabileceğini gösteren basit, kapatılabilir bir ekran mobil cihazlardan aktarıldı.

Önemli: Wear uygulamanız en az bir diğer kimlik doğrulama yöntemi sunmalıdır çünkü bu seçenek sadece İlgili mobil uygulama yüklendiğinde Android ile eşlenmiş kol saatleri. Alternatif bir yöntem sağlayın İlgili mobil uygulamaya sahip olmayan veya Wear OS cihazları olan kullanıcılar için kimlik doğrulama yöntemi Cihaz bir iOS cihazla eşlendiğinde.

Jetonları, aşağıdaki örnekte gösterildiği gibi, mobil uygulamadaki veri katmanını kullanarak iletin:

val token = "..." // Auth token to transmit to the wearable device.
val dataClient: DataClient = Wearable.getDataClient(context)
val putDataReq: PutDataRequest = PutDataMapRequest.create("/auth").run {
    dataMap.putString("token", token)
    asPutDataRequest()
}
val putDataTask: Task<DataItem> = dataClient.putDataItem(putDataReq)

Saat uygulamasındaki veri değişikliği etkinliklerini aşağıdaki örnekte gösterildiği gibi bekleyin:

val dataClient: DataClient = Wearable.getDataClient(context)
dataClient.addListener{ dataEvents ->
    dataEvents.forEach { event ->
        if (event.type == DataEvent.TYPE_CHANGED) {
            val dataItemPath = event.dataItem.uri.path ?: ""
            if (dataItemPath.startsWith("/auth")) {
                val token = DataMapItem.fromDataItem(event.dataItem).dataMap.getString("token")
                // Display interstitial screen to notify the user they are being signed in.
                // Then, store the token and use it in network requests.
            }
        }
    }
}

Giyilebilir Veri Katmanı'nı kullanma hakkında daha fazla bilgi için bkz. Wear OS'te veri gönderme ve senkronize etme.

OAuth 2.0'ı kullanın

Wear OS, OAuth 2.0 tabanlı iki akışı destekler. Bunlar aşağıdaki bölümlerde açıklanmıştır: şu şekilde olur:

  • Şurada tanımlandığı gibi, Code Exchange (PKCE) için Kanıt Anahtar ile Yetkilendirme Kodu Verme RFC 7636
  • Cihaz Yetkilendirme İzni, RFC 8628

Not: Kol saati ambiyansa geçtiğinde uygulamanızın kapanmamasını sağlamak için modundaysa şu ayarları kullanarak Her zaman açık'ı etkinleştirin: AmbientModeSupport.attach kimlik doğrulama etkinliğinde otomatik olarak devreye girer. Ambiyans Modu'ndaki en iyi uygulamalar hakkında daha fazla bilgi için Uygulamanızı Wear'da görünür tutma konusuna bakın.

Kod Değişimi için Kanıt Anahtarı (PKCE)

PKCE'yi etkili bir şekilde kullanmak için RemoteAuthClient

Wear OS uygulamanızdan bir OAuth sağlayıcıya kimlik doğrulama isteği gerçekleştirmek için bir OAuthRequest. nesnesini tanımlayın. Bu nesne, jeton almak için OAuth uç noktanızın URL'sinden ve CodeChallenge. nesnesini tanımlayın. Aşağıdaki kodda bir yetkilendirme isteği oluşturma örneği gösterilmektedir:

val request = OAuthRequest.Builder(this.applicationContext)
    .setAuthProviderUrl(Uri.parse("https://...."))
    .setClientId(clientId)
    .setCodeChallenge(codeChallenge)
    .build()

Yetkilendirme isteğini oluşturduktan sonra sendAuthorizationRequest() yöntemi:

val client = RemoteAuthClient.create(this)
client.sendAuthorizationRequest(request,
    { command -> command?.run() },
    object : RemoteAuthClient.Callback() {
        override fun onAuthorizationResponse(
            request: OAuthRequest,
            response: OAuthResponse
        ) {
            // Extract the token from the response, store it and use it in network requests.
        }

        override fun onAuthorizationError(errorCode: Int) {
            // Handle error
        }
    }
)

Bu istek, tamamlayıcı uygulamaya yapılan bir çağrıyı tetikler ve bu uygulama, web'de bir yetkilendirme kullanıcı arayüzü sunar. Cep telefonundaki bir tarayıcı. OAuth 2.0 sağlayıcısı, kullanıcının kimliğini doğrular ve kullanıcının istenen izinler için izni. Yanıt, otomatik olarak oluşturulan yönlendirme URL'si.

Başarılı veya başarısız bir yetkilendirmeden sonra OAuth 2.0 sunucusu, belirtilen URL'ye yönlendirme yapar. belirtin. Kullanıcı erişim isteğini onaylarsa yanıt bir yetkilendirme kodu. Kullanıcı isteği onaylamazsa yanıt bir hata içerir mesajını alırsınız.

Yanıt, sorgu dizesi biçimindedir ve aşağıdaki örneklerden birine benzer:

  https://wear.googleapis.com/3p_auth/com.your.package.name?code=xyz
  https://wear.googleapis-cn.com/3p_auth/com.your.package.name?code=xyz

Bu işlem, kullanıcıyı tamamlayıcı uygulamaya yönlendiren bir sayfa yükler. Tamamlayıcı uygulama, aşağıdakini kullanarak yanıtı üçüncü taraf izleme uygulamasına iletir: onAuthorizationResponse API.

Ardından saat uygulaması, yetkilendirme kodunu bir erişim jetonuyla değiştirebilir.

Not: OAuthRequest oluşturulduktan sonra, redirectUrl.

Cihaz Yetkilendirme İzni

Cihaz Yetkilendirme İzni kullanılırken kullanıcı başka bir cihazda doğrulama URI'sini açar. Sonra Yetkilendirme sunucusu, bu kullanıcıdan isteği onaylamasını veya reddetmesini ister.

Bu işlemi kolaylaştırmak için RemoteActivityHelper. (aşağıdaki örnekte gösterildiği gibi) kullanıcının eşlenen mobil cihazında bir web sayfası açın:

// Request access from the authorization server and receive Device Authorization Response.
val verificationUri = "..." // Extracted from the Device Authorization Response.
RemoteActivityHelper.startRemoteActivity(
    this,
    Intent(Intent.ACTION_VIEW)
        .addCategory(Intent.CATEGORY_BROWSABLE)
        .setData(Uri.parse(verificationUri)),
    null
)
// Poll the authorization server to find out if the user completed the user authorization
// step on their mobile device.

iOS uygulamanız varsa evrensel bağlantılar ve kodu yetkilendirmesi için tarayıcıya güvenmek yerine uygulamanızda bu niyeti kesmeyin.

Diğer kimlik doğrulama yöntemleri

Wear OS, aşağıdaki bölümlerde açıklanan ek oturum açma yöntemlerini destekler.

Google ile Oturum Açma

Google ile Oturum Açma, kullanıcının mevcut Google Hesabı ile oturum açmasına olanak tanır. Bu sayede en iyi kullanıcı deneyimini sunar ve özellikle zaten bunu avuç içi uygulamalarınızda da kullanabilirsiniz.

Yukarıda açıklanan önerilen kimlik doğrulama yöntemlerinden sonra Google, Oturum açma, iOS'te de iyi çalıştığından bir sonraki tercih edilen çözümdür. Aşağıdakiler Bu bölümde, temel bir Google ile Oturum Açma entegrasyonunun nasıl tamamlanacağı açıklanmaktadır.

Ön koşullar

Google ile Oturum Açma özelliğini Wear OS uygulamanıza entegre etmeye başlamadan önce Google API Konsolu projenize dokunun ve Android Studio projenizi ayarlayın. Daha fazla bilgi için bkz. Google ile Oturum Açma özelliğini Android uygulamanıza entegre etmeye başlayın.

Google ile Oturum Açma özelliğini arka uç sunucusuyla iletişim kurduğunda iki ön koşul vardır:

  • Şunun için OAuth 2.0 web uygulaması istemci kimliği oluşturun: arka uç sunucunuzu ekleyebilirsiniz. Bu istemci kimliği, uygulamanızın istemci kimliğinden farklı. Daha fazla bkz. Sunucu Tarafı Erişimini Etkinleştirme.
  • Kullanıcının kimlik jetonunu göndererek, oturumu açık olan kullanıcıyı sunucuda güvenli bir şekilde tanımlayın HTTPS kullanıyor. Arka uç sunucusunda kullanıcı kimliğinizi nasıl doğrulayacağınızı öğrenmek için Arka uç sunucusuyla kimlik doğrulayın.

Google ile Oturum Açma özelliğini uygulamanıza entegre edin

Bölümlerde ayrıntılı olarak açıklanan aşağıdaki adımları inceleyin ve uygulayın aşağıdaki adımları uygulayın: Google ile Oturum Açma'yı Wear OS uygulamanıza entegre etmek için:

  1. Google ile Oturum Açma'yı yapılandırın.
  2. Google ile Oturum Açma düğmesi ekleyin.
  3. Oturum açma düğmesi seçildiğinde oturum açma akışını başlat dokunuldu.

Google ile Oturum Açma'yı yapılandırma ve GoogleApiClient nesnesini oluşturma

Oturum açma etkinliğinizin onCreate() yönteminde, istekte bulunmak için Google ile Oturum Açma'yı yapılandırın. uygulamanızın gerektirdiği kullanıcı verileri. Daha sonra, şununla bir GoogleApiClient nesnesi oluşturun: ve belirttiğiniz seçeneklere erişebilmesini sağlar. Bu adımlar aşağıdaki örnekte gösterilmiştir:

public class MyNewActivity extends AppCompatActivity {

    private static final int RC_SIGN_IN = 9001;

    private GoogleSignInClient mSignInClient;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GoogleSignInOptions options =
                new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                        .build();

        mSignInClient = GoogleSignIn.getClient(this, options);
    }
}

Uygulamanıza Google ile Oturum Açma düğmesi ekleyin

Google ile Oturum Açma düğmesi eklemek için aşağıdaki adımları uygulayın:

  1. Uygulamanızın düzenine SignInButton:
  2.  <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  3. Uygulamanızın onCreate() yönteminde, düğmenizin Dokunulduğunda kullanıcının oturumunu açmak için OnClickListener:
  4. Kotlin

    findViewById<View>(R.id.sign_in_button).setOnClickListener(this)
    

    Java

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Oturum açma amacı oluşturma ve oturum açma akışını başlatma

onCLick() cihazınızdaki oturum açma düğmesine dokunma işlevini yönetme kullanarak bir oturum açma amacı oluşturarak getSignInIntent() yöntemini kullanabilirsiniz. Sonra niyeti şununla başlatın: startActivityForResult() yöntemini çağırın.

Intent intent = mSignInClient.getSignInIntent();
startActivityForResult(intent, RC_SIGN_IN);

Kullanıcıdan oturum açmak için bir Google Hesabı seçmesi istenir. Kapsamlar isteğinde bulunduysanız profil, e-posta ve açık kimliğin ötesinde, kullanıcıdan bunlara ait erişim izinlerini de kaynaklar.

Son olarak, etkinliğin onActivityResult yöntemiyle oturum açma sonucunu al getSignInResultFromIntent) Oturum açma sonucunu aldıktan sonra oturum açma işleminin isSuccess yöntemini çağırın. Oturum açma başarılı olursa, elde etmek için getSignInAccount yöntemini kullanın Oturum açan kullanıcıyla ilgili bilgileri içeren GoogleSignInAccount nesnesi (kullanıcı adı gibi) Bu adımlar aşağıdaki örnekte gösterilmektedir:

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...).
    if (requestCode == RC_SIGN_IN) {
        Auth.GoogleSignInApi.getSignInResultFromIntent(data)?.apply {
            if (isSuccess) {
                // Get account information.
                fullName = signInAccount?.displayName
                mGivenName = signInAccount?.givenName
                mFamilyName = signInAccount?.familyName
                mEmail = signInAccount?.email
            }
        }
    }
}

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...).
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (signInResult.isSuccess()) {
            GoogleSignInAccount acct = signInResult.getSignInAccount();

            // Get account information.
            fullName = acct.getDisplayName();
            givenName = acct.getGivenName();
            familyName = acct.getFamilyName();
            email = acct.getEmail();
        }
    }
}

Google ile Oturum Açma'yı kullanan örnek bir uygulama görmek için şuraya bakın: GitHub'da Horologist Google Oturum Açma Örneği.

Özel kod kimlik doğrulaması

Yukarıda açıklanan kimlik doğrulama yöntemlerine alternatif olarak kullanıcının başka bir cihazdan kimlik doğrulaması yapmasını gerektirebilir. gibi bir web sitesini ziyaret edip kısa süreli sayısal bir kod elde edin. Kullanıcı daha sonra kodunu girerek kimlik doğrulaması isteyebilir ve bir yetkilendirme jetonu alır.

Bu kimlik doğrulama akışı, uygulamanızın giriş modülünü veya Üçüncü taraf bir kimlik doğrulama sağlayıcısı oturum açma yöntemini uygulamanızın koduna manuel olarak entegre ettiğinde. Bu kimlik doğrulama yöntemi, manuel işlem ve ek çaba gerektirebilir. daha güvenli hale getirmek için, bağımsız Wear OS uygulamalarınızda daha erken kimlik doğrulamasına ihtiyacınız varsa bu yöntemi kullanabilirsiniz.

Bu kurulum için yetkilendirme akışı şu şekilde çalışır:

  1. Kullanıcı, Wear OS uygulamasında yetkilendirme gerektiren bir işlem gerçekleştirir.
  2. Wear OS uygulaması, kullanıcıya bir kimlik doğrulama ekranı sunarak belirli bir URL'den kod girmesine olanak tanır.
  3. Kullanıcı bir mobil cihaza, tablete veya PC'ye geçer ve ardından bir tarayıcıyı açar. Wear OS uygulamasında belirtilen URL'ye gider ve giriş yapar.
  4. Kullanıcı, Wear OS uygulamasına girdiği kısa süreli bir sayısal kod alır Wear OS'te yerleşik klavyeyi kullanarak kimlik doğrulama ekranı:

  5. Bu aşamadan sonra, girilen kodu kullanarak Wear OS cihazda depolanan ve güvenliği sağlanmış bir kimlik doğrulama jetonuyla kodu değiştirin izin verilmez.

Not: Kullanıcının oluşturduğu kod Tamamen sayısal olmalıdır ve alfabetik içermemelidir karakteri ekleyin.

Bu yetkilendirme akışı aşağıdaki grafikte gösterilmektedir: