ধারণা
কয়েকটি ধারণা Usher-এর প্রায় সবকিছু ব্যাখ্যা করে: জিনিসগুলি কোথায় থাকে, টোকেন কে দেয়, মানুষ কোথায় সাইন ইন করেন, এবং প্রতিটি টোকেন কতক্ষণ টেকে।
ওয়ার্কস্পেস, প্রজেক্ট ও এনভায়রনমেন্ট
- একটি ওয়ার্কস্পেস হলো Usher Console-এ আপনার টিম বা কোম্পানি। এর সদস্য ও অডিট লগ এরই অধীনে।
- একটি প্রজেক্ট হলো একটি পণ্য: আপনার ওয়েব অ্যাপ, বা একটি পার্টনার পোর্টাল। একটি ওয়ার্কস্পেসে অনেকগুলি থাকতে পারে।
- একটি এনভায়রনমেন্ট হলো একটি প্রজেক্টের একটি চলমান কপি, সাধারণত ডেভেলপমেন্ট ও প্রোডাকশন। মানুষ, অ্যাপ্লিকেশন, কী ও সেটিংস থাকে এনভায়রনমেন্টে।
ওয়ার্কস্পেস · Acme Ltd
প্রজেক্ট · ওয়েব
- ডেভেলপমেন্ট · wise-otter-42
- প্রোডাকশন · acme
প্রজেক্ট · পার্টনার পোর্টাল
- ডেভেলপমেন্ট · calm-heron-17
- প্রোডাকশন · acme-partners
এনভায়রনমেন্টগুলি গুরুত্বপূর্ণ কিছুই ভাগ করে না। প্রতিটির নিজস্ব Postgres স্কিমা, নিজস্ব সাইনিং কী, এবং নিজস্ব ডেটা কী দিয়ে সিল করা নিজস্ব সিক্রেট আছে। ডেভেলপমেন্টে সাইন আপ করা কেউ প্রোডাকশনে থাকেন না, এবং একটির টোকেন কখনও অন্যটির কী দিয়ে যাচাই করা যায় না।
একজন ওয়ার্কস্পেস অ্যাডমিন একটি প্রজেক্টের নাম টাইপ করার পর তার সংক্ষিপ্ত বিবরণ পৃষ্ঠার শেষ থেকে প্রজেক্টটি মুছে ফেলতে পারেন। এর প্রতিটি এনভায়রনমেন্ট একসাথে চলে যায়: এর মানুষ, অ্যাপ্লিকেশন, কী ও সেটিংস, এবং এর দেওয়া প্রতিটি সেশন ও টোকেন। এর ঠিকানাগুলি আর উত্তর দেয় না এবং আর কখনও কাউকে দেওয়া হয় না, তাই যে অ্যাপ এখনও কোনোটিতে ভরসা করে, অন্য কারও প্রজেক্ট তাকে বোকা বানাতে পারে না।
ইস্যুয়ার
প্রতিটি এনভায়রনমেন্ট নিজেই একটি OpenID Connect ইস্যুয়ার, টেন্যান্ট ডোমেইনে নিজস্ব একটি হোস্টে:
https://<handle>.usherid.com- প্রোডাকশন এনভায়রনমেন্টের হ্যান্ডেল আপনি বেছে নেন: 3 থেকে 32টি ছোট হাতের অক্ষর, অঙ্ক ও একক হাইফেন, যেমন আপনার কোম্পানির নাম। একবার ব্যবহৃত হ্যান্ডেল আর কখনও দেওয়া হয় না।
- ডেভেলপমেন্ট এনভায়রনমেন্ট পায় একটি র্যান্ডম হ্যান্ডেল, যেমন
wise-otter-42, যাকে কেউ কোনো ব্র্যান্ড বলে ভুল করবে না।
এনভায়রনমেন্ট তৈরির সময়েই ইস্যুয়ার স্থির হয়ে যায়, কারণ এর সাইন করা প্রতিটি টোকেন iss-এ এর নাম রাখে, এবং এতে ভরসা করা প্রতিটি অ্যাপ সেই মান যাচাই করে।
টেন্যান্ট ডোমেইন Usher-এর নিজের ডোমেইন (usheridentity.com) থেকে আলাদা একটি রেজিস্টারযোগ্য ডোমেইন, তাই একজন গ্রাহকের সাইন-ইন পৃষ্ঠা কখনও Usher Console-এর সাথে same-site হয় না, এবং কুকিগুলি শুধু-হোস্ট: ব্রাউজার একটি এনভায়রনমেন্টের কুকি কেবল সেই এনভায়রনমেন্টেই পাঠায়।
লবি
লবি হলো সেই সাইন-ইন পৃষ্ঠা যা প্রতিটি এনভায়রনমেন্ট তার ইস্যুয়ারে হোস্ট করে। আপনার অ্যাপ মানুষকে সেখানে পাঠায়; লবি তাঁদের সাইন ইন করিয়ে ফেরত পাঠায়।
- মানুষটি যে অ্যাপে যাচ্ছেন, এটি সবসময় “যাচ্ছেন” চিপে তার নাম বলে।
- এনভায়রনমেন্ট যে পদ্ধতিগুলি অনুমতি দেয় এটি কেবল সেগুলিই দেয়: পাসকি, ইমেলে পাঠানো কোড, ম্যাজিক লিঙ্ক, সোশ্যাল অ্যাকাউন্ট (Google, GitHub, Microsoft, Apple) এবং পাসওয়ার্ড।
- এটি একটি দ্বিতীয় ফ্যাক্টর বাধ্যতামূলক করতে পারে: একটি অথেন্টিকেটর অ্যাপ (ব্যাকআপ কোডসহ) বা একটি পাসকি।
- এটি সবার জন্য খোলা থাকতে পারে, অথবা ঠিকানা ও ডোমেইনের একটি অতিথি তালিকায় সীমিত।
যে পণ্যই মানুষটিকে পাঠাক না কেন, এটি দেখতে একই রকম। এটি ইচ্ছাকৃত: মানুষ শেখেন আসল লবি দেখতে কেমন, এবং কোনো পৃষ্ঠা তা না হলে লক্ষ করেন।
Usher অ্যাকাউন্ট
বেশিরভাগ এনভায়রনমেন্টের নিজস্ব ব্যবহারকারী আছে। Usher অ্যাকাউন্ট আলাদা: একটি অ্যাকাউন্ট, যা Usher দিয়ে চালিয়ে যান দেওয়া প্রতিটি অ্যাপে একজন মানুষকে সাইন ইন করায়। মানুষ নিজেদের অ্যাকাউন্ট পরিচালনা করেন account.usheridentity.com-এ।
টোকেন ও মেয়াদ
| টোকেন | ডিফল্ট | যা সেট করা যায় | এটি কীসের জন্য |
|---|---|---|---|
| অথরাইজেশন কোড | 5 মিনিট | স্থির | একবার টোকেনের বদলে দেওয়া হয়। একবার ব্যবহারযোগ্য। |
| ID টোকেন | 10 মিনিট | 1 থেকে 60 মিনিট | আপনার অ্যাপকে জানায় কে সাইন ইন করেছেন। API কল করার জন্য নয়। |
| অ্যাক্সেস টোকেন | 10 মিনিট | 1 থেকে 60 মিনিট | আপনার API-তে পাঠানো হয়, যা এটি যাচাই করে। |
| রিফ্রেশ টোকেন | 30 দিন | 1 থেকে 90 দিন | নতুন অ্যাক্সেস টোকেন আনে। প্রতিবার ব্যবহারে বদলে যায়। offline_access লাগে। |
| মেশিন অ্যাক্সেস টোকেন | 15 মিনিট | 1 থেকে 60 মিনিট | client_credentials-এর জন্য: এমন সার্ভার যার পেছনে কোনো মানুষ নেই। |
| ইমেলে পাঠানো কোড, ম্যাজিক লিঙ্ক | 10 মিনিট | স্থির | একবার সাইন-ইন। একটি কোডে তিনবার চেষ্টা করা যায়। |
লবির সেশনেরও মেয়াদ আছে: ব্যবহার না হলে 7 দিন পরে (1 থেকে 30) সেশন শেষ হয়, এবং মোট 30 দিন পরে (1 থেকে 90)। স্পর্শকাতর কিছু বদলাতে, যেমন ইমেল ঠিকানা, গত 10 মিনিটের মধ্যে সাইন-ইন লাগে।
সাইনিং কী
টোকেনগুলি ডিফল্টভাবে RS256 দিয়ে সাইন করা হয়; একটি এনভায়রনমেন্ট এর বদলে ES256 বা EdDSA ব্যবহার করতে পারে। পাবলিক কীগুলি এনভায়রনমেন্টের jwks_uri-তে প্রকাশিত হয়, তাই আপনার লাইব্রেরি সেগুলি নিয়ে আসে, এবং কী রোটেট হলে নতুনগুলি তুলে নেয়।
স্কোপ
| স্কোপ | আপনার অ্যাপ যা পায় |
|---|---|
openid | বাধ্যতামূলক। মানুষটির sub সহ একটি ID টোকেন। |
profile | তাঁর নাম ও ছবি। |
email | তাঁর ইমেল ঠিকানা, এবং সেটি যাচাই করা কি না। |
offline_access | একটি রিফ্রেশ টোকেন, যাতে তিনি সাইন-ইন থাকেন। |