আপনার ব্যবহারকারীরা পাসকি দিয়ে প্রমাণীকরণ করতে পারার আগে, আপনার অ্যাপটিকে প্রথমে তাদের অ্যাকাউন্টের জন্য পাসকি নিবন্ধন করতে হবে বা তৈরি করতে হবে।
পাসকি তৈরি করতে, আপনার অ্যাপ সার্ভার থেকে পাসকি তৈরি করার জন্য প্রয়োজনীয় বিশদ তথ্য সংগ্রহ করুন এবং তারপর ক্রেডেনশিয়াল ম্যানেজার API-তে কল করুন, যা একটি পাবলিক এবং প্রাইভেট কী জোড়া ফেরত দেয়। ফেরত আসা প্রাইভেট কীটি গুগল পাসওয়ার্ড ম্যানেজারের মতো একটি ক্রেডেনশিয়াল প্রদানকারীতে পাসকি হিসেবে সংরক্ষণ করা হয়। পাবলিক কীটি আপনার অ্যাপ সার্ভারে সংরক্ষণ করা হয়।

পূর্বশর্ত
নিশ্চিত করুন যে আপনি ডিজিটাল অ্যাসেট লিঙ্ক সেট আপ করেছেন এবং আপনি Android 9 (API লেভেল 28) বা তার বেশি চলমান ডিভাইসগুলিকে লক্ষ্য করছেন।
সংক্ষিপ্ত বিবরণ
এই নির্দেশিকাটি আপনার নির্ভরযোগ্য পার্টি ক্লায়েন্ট অ্যাপে পাসকি তৈরি করার জন্য প্রয়োজনীয় পরিবর্তনগুলির উপর আলোকপাত করে এবং নির্ভরযোগ্য পার্টি অ্যাপ সার্ভার বাস্তবায়নের একটি সংক্ষিপ্ত বিবরণ দেয়। সার্ভার-সাইড ইন্টিগ্রেশন সম্পর্কে আরও জানতে, সার্ভার-সাইড পাসকি নিবন্ধন দেখুন।
- আপনার অ্যাপে নির্ভরতা যোগ করুন : প্রয়োজনীয় ক্রেডেনশিয়াল ম্যানেজার লাইব্রেরি যোগ করুন।
- ক্রেডেনশিয়াল ম্যানেজার ইন্সট্যান্সিয়েট করুন : একটি ক্রেডেনশিয়াল ম্যানেজার ইনস্ট্যান্স তৈরি করুন।
- অ্যাপ সার্ভার থেকে ক্রেডেনশিয়াল তৈরির বিকল্পগুলি পান : আপনার অ্যাপ সার্ভার থেকে, ক্লায়েন্ট অ্যাপটিকে পাসকি তৈরি করার জন্য প্রয়োজনীয় বিবরণ পাঠান, যেমন অ্যাপ, ব্যবহারকারী, সেইসাথে একটি
challengeএবং অন্যান্য ক্ষেত্র সম্পর্কে তথ্য। - একটি পাসকি অনুরোধ করুন : আপনার অ্যাপে, অ্যাপ সার্ভার থেকে প্রাপ্ত বিবরণ ব্যবহার করে একটি
GetPublicKeyCredentialOptionঅবজেক্ট তৈরি করুন এবং এই অবজেক্টটি ব্যবহার করেcredentialManager.getCredential()পদ্ধতি ব্যবহার করে একটি পাসকি তৈরি করুন। - পাসকি তৈরির প্রতিক্রিয়া পরিচালনা করুন : যখন আপনি আপনার ক্লায়েন্ট অ্যাপে শংসাপত্রগুলি পান, তখন আপনাকে অবশ্যই এনকোড করতে হবে, সিরিয়ালাইজ করতে হবে এবং তারপর পাবলিক কীটি অ্যাপ সার্ভারে পাঠাতে হবে। পাসকি তৈরির ক্ষেত্রে ঘটতে পারে এমন প্রতিটি ব্যতিক্রমও আপনাকে পরিচালনা করতে হবে।
- সার্ভারে পাবলিক কী যাচাই করুন এবং সংরক্ষণ করুন : শংসাপত্রের উৎপত্তি যাচাই করতে সার্ভার-সাইড পদক্ষেপগুলি সম্পূর্ণ করুন এবং তারপর পাবলিক কী সংরক্ষণ করুন।
- ব্যবহারকারীকে অবহিত করুন : ব্যবহারকারীকে অবহিত করুন যে তাদের পাসকি তৈরি করা হয়েছে।
১. আপনার অ্যাপে নির্ভরতা যোগ করুন
আপনার অ্যাপ মডিউলের build.gradle ফাইলে নিম্নলিখিত নির্ভরতাগুলি যোগ করুন:
কোটলিন
dependencies { implementation("androidx.credentials:credentials:1.6.0-beta03") implementation("androidx.credentials:credentials-play-services-auth:1.6.0-beta03") }
গ্রোভি
dependencies { implementation "androidx.credentials:credentials:1.6.0-beta03" implementation "androidx.credentials:credentials-play-services-auth:1.6.0-beta03" }
2. ক্রেডেনশিয়াল ম্যানেজার ইনস্ট্যান্টিয়েট করুন
একটি CredentialManager অবজেক্ট তৈরি করতে আপনার অ্যাপ বা কার্যকলাপের প্রসঙ্গ ব্যবহার করুন।
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
৩. আপনার অ্যাপ সার্ভার থেকে শংসাপত্র তৈরির বিকল্পগুলি পান
যখন ব্যবহারকারী "পাসকি তৈরি করুন" বোতামে ক্লিক করেন অথবা যখন একজন নতুন ব্যবহারকারী সাইন আপ করেন, তখন পাসকি নিবন্ধন প্রক্রিয়া শুরু করার জন্য প্রয়োজনীয় তথ্য পেতে আপনার অ্যাপ থেকে আপনার অ্যাপ সার্ভারের কাছে একটি অনুরোধ করুন।
আপনার অ্যাপ সার্ভারে একটি FIDO-সম্মত লাইব্রেরি ব্যবহার করে আপনার ক্লায়েন্ট অ্যাপকে পাসকি তৈরি করার জন্য প্রয়োজনীয় তথ্য পাঠান, যেমন ব্যবহারকারী, অ্যাপ এবং অতিরিক্ত কনফিগারেশন বৈশিষ্ট্য সম্পর্কে তথ্য। আরও জানতে, সার্ভার সাইড পাসকি নিবন্ধন দেখুন।
ক্লায়েন্ট অ্যাপে, অ্যাপ সার্ভার দ্বারা প্রেরিত পাবলিক কী তৈরির বিকল্পগুলি ডিকোড করুন। এগুলি সাধারণত JSON ফর্ম্যাটে উপস্থাপন করা হয়। ওয়েব ক্লায়েন্টদের জন্য এই ডিকোডিং কীভাবে করা হয় সে সম্পর্কে আরও জানতে, এনকোডিং এবং ডিকোডিং দেখুন। অ্যান্ড্রয়েড ক্লায়েন্ট অ্যাপগুলির জন্য, আপনাকে আলাদাভাবে ডিকোডিং পরিচালনা করতে হবে।
নিম্নলিখিত স্নিপেটটি অ্যাপ সার্ভার দ্বারা প্রেরিত পাবলিক কী তৈরির বিকল্পগুলির কাঠামো দেখায়:
{
"challenge": "<base64url-encoded challenge>",
"rp": {
"name": "<relying party name>",
"id": "<relying party host name>"
},
"user": {
"id": "<base64url-encoded user ID>",
"name": "<user name>",
"displayName": "<user display name>"
},
"pubKeyCredParams": [
{
"type": "public-key",
"alg": -7
}
],
"attestation": "none",
"excludeCredentials": [
{
"id": "<base64url-encoded credential ID to exclude>",
"type": "public-key"
}
],
"authenticatorSelection": {
"requireResidentKey": true,
"residentKey": "required",
"userVerification": "required"
}
}
পাবলিক কী তৈরির বিকল্পগুলির মূল ক্ষেত্রগুলির মধ্যে রয়েছে:
-
challenge: একটি সার্ভার-জেনারেটেড র্যান্ডম স্ট্রিং যা রিপ্লে আক্রমণ প্রতিরোধ করতে ব্যবহৃত হয়। -
rp: অ্যাপ সম্পর্কে বিস্তারিত।-
rp.name: অ্যাপটির নাম। -
rp.id: অ্যাপের ডোমেন বা সাবডোমেন।
-
-
user: ব্যবহারকারী সম্পর্কে বিস্তারিত তথ্য।-
id: ব্যবহারকারীর অনন্য আইডি। এই মানটিতে ব্যক্তিগতভাবে শনাক্তকারী তথ্য অন্তর্ভুক্ত করা উচিত নয়, উদাহরণস্বরূপ, ইমেল ঠিকানা বা ব্যবহারকারীর নাম। আপনি একটি র্যান্ডম, 16-বাইট মান ব্যবহার করতে পারেন। -
name: অ্যাকাউন্টের জন্য একটি অনন্য শনাক্তকারী যা ব্যবহারকারী চিনতে পারবেন, যেমন তাদের ইমেল ঠিকানা বা ব্যবহারকারীর নাম। এটি অ্যাকাউন্ট নির্বাচকের মধ্যে প্রদর্শিত হবে। যদি ব্যবহারকারীর নাম ব্যবহার করেন, তাহলে পাসওয়ার্ড প্রমাণীকরণের মতো একই মান ব্যবহার করুন। -
displayName: অ্যাকাউন্ট নির্বাচকের মধ্যে প্রদর্শনের উদ্দেশ্যে অ্যাকাউন্টের জন্য একটি ঐচ্ছিক, ব্যবহারকারী-বান্ধব নাম।
-
authenticatorSelection: প্রমাণীকরণের জন্য ব্যবহৃত ডিভাইস সম্পর্কে বিশদ বিবরণ।-
authenticatorAttachment: পছন্দের authenticator নির্দেশ করে। সম্ভাব্য মানগুলি নিম্নরূপ: -platform: এই মানটি ব্যবহারকারীর ডিভাইসে তৈরি একটি authenticator এর জন্য ব্যবহৃত হয়, যেমন একটি ফিঙ্গারপ্রিন্ট সেন্সর। -cross-platform: এই মানটি রোমিং ডিভাইস যেমন নিরাপত্তা কী এর জন্য ব্যবহৃত হয়। এটি সাধারণত পাসকি প্রসঙ্গে ব্যবহৃত হয় না। - অনির্দিষ্ট (প্রস্তাবিত): এই মানটি অনির্দিষ্ট রেখে দিলে ব্যবহারকারীরা তাদের পছন্দের ডিভাইসে পাসকি তৈরি করার নমনীয়তা পান। বেশিরভাগ ক্ষেত্রে, প্যারামিটারটি অনির্দিষ্ট রেখে দেওয়াই সর্বোত্তম বিকল্প।-
requireResidentKey: একটি পাসকি তৈরি করতে, এইBooleanফিল্ডের মানtrueতে সেট করুন। -
residentKey: একটি পাসকি তৈরি করতে, মানটিrequiredএ সেট করুন। -
userVerification: পাসকি নিবন্ধনের সময় ব্যবহারকারী যাচাইকরণের প্রয়োজনীয়তা নির্দিষ্ট করতে ব্যবহৃত হয়। সম্ভাব্য মানগুলি নিম্নরূপ: -preferred: সুরক্ষার চেয়ে ব্যবহারকারীর অভিজ্ঞতাকে অগ্রাধিকার দিলে এই মানটি ব্যবহার করুন, যেমন এমন পরিবেশে যেখানে ব্যবহারকারী যাচাইকরণ সুরক্ষার চেয়ে বেশি ঘর্ষণ সৃষ্টি করে। -required: ডিভাইসে উপলব্ধ ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা প্রয়োজন হলে এই মানটি ব্যবহার করুন। -discouraged: ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা নিরুৎসাহিত হলে এই মানটি ব্যবহার করুন।
userVerificationসম্পর্কে আরও জানতে, userVerification এর গভীর বিশ্লেষণ দেখুন।
-
-
excludeCredentials: যদি একই ক্রেডেনশিয়াল প্রদানকারীর সাথে ইতিমধ্যেই একটি পাসকি বিদ্যমান থাকে, তাহলে একটি ডুপ্লিকেট পাসকি তৈরি রোধ করার জন্য একটি অ্যারেতে ক্রেডেনশিয়াল আইডি তালিকাভুক্ত করুন।
৪. একটি পাসকি অনুরোধ করুন
সার্ভার-সাইড পাবলিক কী তৈরির বিকল্পগুলি পার্স করার পরে, এই বিকল্পগুলিকে একটি CreatePublicKeyCredentialRequest অবজেক্টে মোড়ানো এবং createCredential() কল করে একটি পাসকি তৈরি করুন।
createPublicKeyCredentialRequest এ নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
-
requestJson: অ্যাপ সার্ভার দ্বারা প্রেরিত শংসাপত্র তৈরির বিকল্পগুলি। -
preferImmediatelyAvailableCredentials: এটি একটি ঐচ্ছিক বুলিয়ান ক্ষেত্র যা নিরাপত্তা কী বা হাইব্রিড কী প্রবাহের শংসাপত্রের পরিবর্তে অনুরোধ পূরণের জন্য কেবল স্থানীয়ভাবে উপলব্ধ বা শংসাপত্র সরবরাহকারী-সিঙ্ক করা শংসাপত্র ব্যবহার করা হবে কিনা তা নির্ধারণ করে। সম্ভাব্য ব্যবহারগুলি নিম্নরূপ:-
false(ডিফল্ট): যদি কোনও স্পষ্ট ব্যবহারকারীর ক্রিয়াকলাপের কারণে ক্রেডেনশিয়াল ম্যানেজারে কলটি ট্রিগার করা হয় তবে এই মানটি ব্যবহার করুন। -
true: যদি ক্রেডেনশিয়াল ম্যানেজারকে সুবিধাবাদীভাবে ডাকা হয়, যেমন প্রথমবার অ্যাপ খোলার সময়, তাহলে এই মানটি ব্যবহার করুন।
যদি আপনি মানটিtrueসেট করেন এবং তাৎক্ষণিকভাবে কোনও উপলব্ধ শংসাপত্র না থাকে, তাহলে Credential Manager কোনও UI দেখাবে না এবং অনুরোধটি তাৎক্ষণিকভাবে ব্যর্থ হবে, get অনুরোধের জন্য NoCredentialException এবং create অনুরোধের জন্যCreateCredentialNoCreateOptionExceptionফেরত দেবে।
-
-
origin: এই ক্ষেত্রটি স্বয়ংক্রিয়ভাবে অ্যান্ড্রয়েড অ্যাপের জন্য সেট করা হয়। ব্রাউজার এবং অনুরূপ সুবিধাপ্রাপ্ত অ্যাপগুলির জন্য যাদেরoriginসেট করতে হবে, বিশেষাধিকারপ্রাপ্ত অ্যাপগুলির জন্য অন্যান্য পক্ষের পক্ষ থেকে ক্রেডেনশিয়াল ম্যানেজার কল করুন দেখুন। -
isConditional: এটি একটি ঐচ্ছিক ক্ষেত্র যা ডিফল্টভাবেfalseহিসেবে ব্যবহৃত হয়। যখন আপনি এটিtrueহিসেবে সেট করেন এবং যদি কোনও ব্যবহারকারীর কাছে পাসকি না থাকে, তাহলে পরের বার যখন তারা একটি সংরক্ষিত পাসওয়ার্ড দিয়ে সাইন ইন করবে তখন আপনি স্বয়ংক্রিয়ভাবে তাদের পক্ষ থেকে একটি তৈরি করবেন। পাসকিটি ব্যবহারকারীর শংসাপত্র প্রদানকারীতে সংরক্ষিত থাকে। শর্তসাপেক্ষ তৈরি বৈশিষ্ট্যের জন্যandroidx.credentialsএর সর্বশেষ সংস্করণ প্রয়োজন।
createCredential() ফাংশনটি কল করার মাধ্যমে Credential Manager এর অন্তর্নির্মিত বটম শিট UI চালু হয় যা ব্যবহারকারীকে একটি পাসকি ব্যবহার করতে এবং একটি ক্রেডেনশিয়াল প্রদানকারী এবং স্টোরেজের জন্য অ্যাকাউন্ট নির্বাচন করতে অনুরোধ করে। তবে, যদি isConditional true তে সেট করা থাকে, তাহলে বটম শিট UI প্রদর্শিত হবে না এবং পাসকি স্বয়ংক্রিয়ভাবে তৈরি হবে।
৫. প্রতিক্রিয়া পরিচালনা করুন
ডিভাইসের স্ক্রিন লক ব্যবহার করে ব্যবহারকারী যাচাই করার পর, একটি পাসকি তৈরি করা হয় এবং ব্যবহারকারীর নির্বাচিত শংসাপত্র প্রদানকারীতে সংরক্ষণ করা হয়।
createCredential() সফলভাবে কল করার পর যে প্রতিক্রিয়া আসবে তা হল একটি PublicKeyCredential অবজেক্ট।
PublicKeyCredential দেখতে এরকম:
{
"id": "<identifier>",
"type": "public-key",
"rawId": "<identifier>",
"response": {
"clientDataJSON": "<ArrayBuffer encoded object with the origin and signed challenge>",
"attestationObject": "<ArrayBuffer encoded object with the public key and other information.>"
},
"authenticatorAttachment": "platform"
}
ক্লায়েন্ট অ্যাপে, অবজেক্টটিকে সিরিয়ালাইজ করুন এবং অ্যাপ সার্ভারে পাঠান।
নিম্নলিখিত স্নিপেটে দেখানো ব্যর্থতাগুলি পরিচালনা করতে কোড যুক্ত করুন:
fun handleFailure(e: CreateCredentialException) {
when (e) {
is CreatePublicKeyCredentialDomException -> {
// Handle the passkey DOM errors thrown according to the
// WebAuthn spec.
}
is CreateCredentialCancellationException -> {
// The user intentionally canceled the operation and chose not
// to register the credential.
}
is CreateCredentialInterruptedException -> {
// Retry-able error. Consider retrying the call.
}
is CreateCredentialProviderConfigurationException -> {
// Your app is missing the provider configuration dependency.
// Most likely, you're missing the
// "credentials-play-services-auth" module.
}
is CreateCredentialCustomException -> {
// You have encountered an error from a 3rd-party SDK. If you
// make the API call with a request object that's a subclass of
// CreateCustomCredentialRequest using a 3rd-party SDK, then you
// should check for any custom exception type constants within
// that SDK to match with e.type. Otherwise, drop or log the
// exception.
}
else -> Log.w(TAG, "Unexpected exception type ${e::class.java.name}")
}
}
৬. অ্যাপ সার্ভারে পাবলিক কী যাচাই করুন এবং সংরক্ষণ করুন
অ্যাপ সার্ভারে, আপনাকে অবশ্যই পাবলিক কী শংসাপত্র যাচাই করতে হবে এবং তারপর পাবলিক কী সংরক্ষণ করতে হবে ।
পাবলিক কী ক্রেডেনশিয়ালের উৎপত্তি যাচাই করতে, অনুমোদিত অ্যাপের তালিকার সাথে এটির তুলনা করুন। যদি কোনও কীর উৎপত্তি অজ্ঞাত থাকে, তাহলে এটি প্রত্যাখ্যান করুন।
অ্যাপটির SHA 256 ফিঙ্গারপ্রিন্ট পেতে:
টার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার রিলিজ অ্যাপের স্বাক্ষর শংসাপত্রটি প্রিন্ট করুন:
keytool -list -keystore <path-to-apk-signing-keystore>উত্তরে, স্বাক্ষরকারী সার্টিফিকেটের SHA 256 ফিঙ্গারপ্রিন্ট চিহ্নিত করুন, যা
Certificate fingerprints blockহিসাবে উল্লেখ করা হয়েছে:SHA256।base64url এনকোডিং ব্যবহার করে SHA256 ফিঙ্গারপ্রিন্ট এনকোড করুন। এই পাইথন উদাহরণটি দেখায় যে কীভাবে ফিঙ্গারপ্রিন্ট সঠিকভাবে এনকোড করতে হয়:
import binascii import base64 fingerprint = '<SHA256 finerprint>' # your app's SHA256 fingerprint print(base64.urlsafe_b64encode(binascii.a2b_hex(fingerprint.replace(':', ''))).decode('utf8').replace('=', ''))পূর্ববর্তী ধাপের আউটপুটের শুরুতে
android:apk-key-hash: যোগ করুন যাতে আপনি নিম্নলিখিতটির মতো কিছু পান:android:apk-key-hash:<encoded SHA 256 fingerprint>ফলাফলটি আপনার অ্যাপ সার্ভারে অনুমোদিত অরিজিনের সাথে মিলবে। যদি আপনার একাধিক সাইনিং সার্টিফিকেট থাকে, যেমন ডিবাগিং এবং রিলিজের জন্য সার্টিফিকেট, অথবা একাধিক অ্যাপ, তাহলে প্রক্রিয়াটি পুনরাবৃত্তি করুন এবং অ্যাপ সার্ভারে সমস্ত অরিজিনকে বৈধ হিসেবে গ্রহণ করুন।
৭. ব্যবহারকারীকে অবহিত করুন
পাসকি সফলভাবে তৈরি হওয়ার পর, আপনার ব্যবহারকারীদের পাসকি সম্পর্কে অবহিত করুন এবং তাদের জানান যে তারা তাদের শংসাপত্র প্রদানকারী অ্যাপ থেকে অথবা অ্যাপ সেটিংসের মধ্যে থেকে তাদের পাসকি পরিচালনা করতে পারবেন। একটি কাস্টম ডায়ালগ, বিজ্ঞপ্তি বা স্ন্যাকবার ব্যবহার করে ব্যবহারকারীদের অবহিত করুন। যেহেতু কোনও ক্ষতিকারক সত্তার দ্বারা অপ্রত্যাশিত পাসকি তৈরির জন্য তাৎক্ষণিক নিরাপত্তা সতর্কতা প্রয়োজন, তাই এই ইন-অ্যাপ পদ্ধতিগুলিকে বহিরাগত যোগাযোগের সাথে সম্পূরক করার কথা বিবেচনা করুন, যেমন একটি ইমেল।
ব্যবহারকারীর অভিজ্ঞতা উন্নত করুন
ক্রেডেনশিয়াল ম্যানেজারের সাথে সাইন আপ বাস্তবায়নের সময় ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে, ক্রেডেনশিয়াল পুনরুদ্ধারের জন্য কার্যকারিতা যোগ করার এবং অটোফিল ডায়ালগগুলি দমন করার কথা বিবেচনা করুন।
একটি নতুন ডিভাইসে শংসাপত্র পুনরুদ্ধার করতে কার্যকারিতা যোগ করুন
ব্যবহারকারীদের নতুন ডিভাইসে তাদের অ্যাকাউন্টে নির্বিঘ্নে লগ ইন করার অনুমতি দেওয়ার জন্য, পুনরুদ্ধার শংসাপত্র কার্যকারিতা বাস্তবায়ন করুন। BackupAgent সাথে পুনরুদ্ধার শংসাপত্র যুক্ত করা ব্যবহারকারীদের একটি নতুন ডিভাইসে আপনার পুনরুদ্ধার করা অ্যাপটি খোলার সময় লগ ইন করে, যার ফলে তারা অবিলম্বে আপনার অ্যাপটি ব্যবহার করতে পারবেন।
শংসাপত্র ক্ষেত্রগুলিতে অটোফিল বন্ধ করুন (ঐচ্ছিক)
যেসব অ্যাপ স্ক্রিনে ব্যবহারকারীরা প্রমাণীকরণের জন্য ক্রেডেনশিয়াল ম্যানেজারের বটম শিট UI ব্যবহার করবেন বলে আশা করা হচ্ছে, সেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড ক্ষেত্রগুলিতে isCredential অ্যাট্রিবিউট যোগ করুন। এটি অটোফিল ডায়ালগ ( FillDialog এবং SaveDialog ) কে ক্রেডেনশিয়াল ম্যানেজারের বটম শিট UI এর সাথে ওভারল্যাপ করা থেকে বিরত রাখে।
isCredential অ্যাট্রিবিউটটি Android 14 এবং তার পরবর্তী ভার্সনে সমর্থিত।
নিচের উদাহরণটি দেখায় যে কীভাবে আপনি আপনার অ্যাপের প্রাসঙ্গিক ভিউতে প্রাসঙ্গিক ব্যবহারকারীর নাম এবং পাসওয়ার্ড ক্ষেত্রগুলিতে isCredential বৈশিষ্ট্য যোগ করতে পারেন:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:isCredential="true" />