Rumah >pembangunan bahagian belakang >Tutorial Python >Daftar tunggal (SSO) dijelaskan
Tanda tunggal (SSO) adalah proses yang membenarkan pengguna mengakses pelbagai perkhidmatan selepas melalui pengesahan pengguna (iaitu pembalakan) hanya sekali. Ini melibatkan pengesahan ke dalam semua perkhidmatan yang diberikan oleh pengguna kepada, selepas masuk ke dalam perkhidmatan utama. Antara faedah lain, SSO mengelakkan tugas yang membosankan untuk mengesahkan identiti berulang kali melalui kata laluan atau sistem pengesahan lain.
mari kita lihat SSO dengan lebih terperinci dan kami akan menggunakan perkhidmatan yang sangat terkenal untuk menunjukkan kegunaan dan faedahnya.
Proses Pengesahan
Langkah pertama adalah log masuk ke perkhidmatan utama (Facebook atau Google, misalnya).
Contoh yang baik dari penggunaan SSO adalah dalam perkhidmatan Google. Anda hanya perlu log masuk ke satu akaun Google utama untuk mengakses perkhidmatan yang berbeza seperti YouTube, Gmail, Google, Google Analytics, dan banyak lagi.
tetapi masalah timbul dengan penggunaan perkhidmatan pihak ketiga tersebut. Oleh kerana kod mereka dihoskan di pelayan masing -masing, pengguna perlu log masuk secara eksplisit pada perkhidmatan mereka walaupun mereka log masuk ke laman web anda. Penyelesaiannya, seperti yang disebutkan, adalah pelaksanaan SSO.
Sebaik -baiknya, anda disediakan sepasang kunci - awam dan swasta. Anda menjana token untuk pengguna log masuk dan menghantarnya ke perkhidmatan bersama dengan kunci awam anda untuk pengesahan. Setelah pengesahan, pengguna secara automatik log masuk ke perkhidmatan. Untuk memahami ini dengan lebih baik, mari kita gunakan contoh sebenar.
disqus sso
Oleh kerana sistem komen disqus tertanam ke dalam halaman anda, adalah penting bahawa pengguna tidak perlu log masuk untuk kali kedua dalam Disqus jika dia sudah log masuk di laman web anda. Disqus mempunyai API dengan dokumentasi yang luas mengenai cara mengintegrasikan SSO.
Anda mula -mula menjana kunci yang dipanggil REMOTE_AUTH_S3 untuk pengguna log masuk menggunakan kekunci API disqus peribadi dan awam anda. Anda diberikan kunci awam dan peribadi apabila anda mendaftarkan SSO sebagai tambahan percuma dalam Disqus.
Anda lulus maklumat pengguna (ID, nama pengguna, dan e -mel) kepada Disqus untuk pengesahan sebagai JSON. Anda menjana mesej yang perlu anda gunakan semasa memberikan sistem DISQUS pada halaman anda. Untuk memahaminya dengan lebih baik, marilah kita lihat contoh yang ditulis dalam Python.
Contoh kod dalam beberapa bahasa yang popular seperti PHP, Ruby, dan Python disediakan oleh Disqus pada GitHub.
Menjana mesej
<span>import base64 </span><span>import hashlib </span><span>import hmac </span><span>import simplejson </span><span>import time </span> DISQUS_SECRET_KEY <span>= '123456' </span>DISQUS_PUBLIC_KEY <span>= 'abcdef' </span> <span>def get_disqus_sso(user): </span> <span># create a JSON packet of our data attributes </span> data <span>= simplejson.dumps({ </span> <span>'id': user['id'], </span> <span>'username': user['username'], </span> <span>'email': user['email'], </span> <span>}) </span> <span># encode the data to base64 </span> message <span>= base64.b64encode(data) </span> <span># generate a timestamp for signing the message </span> timestamp <span>= int(time.time()) </span> <span># generate our hmac signature </span> sig <span>= hmac.HMAC(DISQUS_SECRET_KEY, '%s %s' % (message, timestamp), hashlib.sha1).hexdigest() </span> <span># return a script tag to insert the sso message </span> <span>return """<script type="text/javascript"> </span><span> var disqus_config = function() { </span><span> this.page.remote_auth_s3 = "%(message)s %(sig)s %(timestamp)s"; </span><span> this.page.api_key = "%(pub_key)s"; </span><span> } </span><span> </script>""" % dict( </span> message<span>=message, </span> timestamp<span>=timestamp, </span> sig<span>=sig, </span> pub_key<span>=DISQUS_PUBLIC_KEY, </span> <span>)</span>Inisialisasi Comments Disqus
kita dapat melihat pelaksanaan SSO di Blog Bowl, yang merupakan direktori blog yang dibangunkan di Python/Django. Sekiranya anda log masuk ke laman web, anda perlu dilog masuk apabila sistem komen disqus diberikan. Dalam contoh ini, objek orang menyimpan ID (yang unik untuk setiap orang di laman web ini), e -mel, dan pen_name. Mesej dihasilkan seperti yang ditunjukkan di bawah.
<span>import base64 </span><span>import hashlib </span><span>import hmac </span><span>import simplejson </span><span>import time </span> DISQUS_SECRET_KEY <span>= '123456' </span>DISQUS_PUBLIC_KEY <span>= 'abcdef' </span> <span>def get_disqus_sso(user): </span> <span># create a JSON packet of our data attributes </span> data <span>= simplejson.dumps({ </span> <span>'id': user['id'], </span> <span>'username': user['username'], </span> <span>'email': user['email'], </span> <span>}) </span> <span># encode the data to base64 </span> message <span>= base64.b64encode(data) </span> <span># generate a timestamp for signing the message </span> timestamp <span>= int(time.time()) </span> <span># generate our hmac signature </span> sig <span>= hmac.HMAC(DISQUS_SECRET_KEY, '%s %s' % (message, timestamp), hashlib.sha1).hexdigest() </span> <span># return a script tag to insert the sso message </span> <span>return """<script type="text/javascript"> </span><span> var disqus_config = function() { </span><span> this.page.remote_auth_s3 = "%(message)s %(sig)s %(timestamp)s"; </span><span> this.page.api_key = "%(pub_key)s"; </span><span> } </span><span> </script>""" % dict( </span> message<span>=message, </span> timestamp<span>=timestamp, </span> sig<span>=sig, </span> pub_key<span>=DISQUS_PUBLIC_KEY, </span> <span>)</span>
Di hujung depan, anda hanya mencetak pembolehubah ini untuk melaksanakan skrip. Untuk demo secara langsung, anda boleh melawat siaran ini di Blog Bowl dan periksa komen yang diberikan di bahagian bawah. Sememangnya, anda tidak akan dilog masuk.
Satu lagi ciri menarik yang disediakan oleh Blog Bowl adalah tidak mahu namanya disiarkan semasa menyiarkan kandungan (seperti siaran ini). Fikirkan keadaan apabila anda mahu pengguna menyiarkan balasan kepada komen mengenai Disqus sebagai pengguna tanpa nama (seperti di Quora). Kami mengambil jalan mudah dan melambangkan sejumlah besar ke ID. Untuk mengaitkan e -mel yang unik untuk pengguna (supaya ia tidak muncul bersama dengan komen lain oleh pengguna), kami juga menghasilkan e -mel yang unik. Ini menyimpan komen tanpa nama anda bersama -sama, tetapi tidak menggabungkannya dengan profil asal anda atau komen tanpa nama oleh pengguna lain.
dan inilah kod:
Kesimpulan
sso <span>= get_disqus_sso({ </span> <span>'id': person.id, </span> <span>'email': person.user.email, </span> <span>'username': person.pen_name </span><span>})</span>Walaupun proses SSO untuk perkhidmatan yang berbeza sedikit berbeza, idea asas di belakangnya adalah sama - menghasilkan token dan mengesahkannya! Saya harap siaran ini telah membantu anda mendapatkan gambaran tentang bagaimana aplikasi mengintegrasikan SSO dan mungkin ini akan membantu anda melaksanakan SSO sendiri.
Soalan Lazim mengenai Single Sign-On (SSO)
Apakah tujuan utama Single Sign-On (SSO)? dengan satu set kelayakan log masuk. Ini menghapuskan keperluan untuk mengingati pelbagai nama pengguna dan kata laluan, dengan itu meningkatkan kemudahan dan produktiviti pengguna. SSO juga meningkatkan keselamatan dengan mengurangkan peluang salah urus kata laluan dan akses yang tidak dibenarkan.
Adakah terdapat risiko yang berkaitan dengan tanda tunggal (SSO)? Dilengkapi dengan potensi risiko. Sekiranya kelayakan SSO pengguna dikompromikan, penyerang boleh mendapatkan akses kepada semua aplikasi yang dikaitkan dengan kelayakan tersebut. Oleh itu, adalah penting untuk melaksanakan langkah-langkah keselamatan yang kukuh, seperti pengesahan multi-faktor dan kemas kini kata laluan biasa, untuk mengurangkan risiko ini. MFA)? SSO memudahkan proses log masuk dengan membenarkan pengguna mengakses pelbagai aplikasi dengan satu set kelayakan. Sebaliknya, MFA meningkatkan keselamatan dengan menghendaki pengguna menyediakan dua atau lebih bentuk pengenalan sebelum memberikan akses. , SSO boleh digunakan dengan aplikasi mudah alih. Banyak penyelesaian SSO menawarkan sokongan mudah alih, membolehkan pengguna mengakses pelbagai aplikasi pada peranti mudah alih mereka dengan satu set kelayakan. Meningkatkan pengalaman pengguna dengan memudahkan proses log masuk. Pengguna hanya perlu mengingati satu set kelayakan, mengurangkan kekecewaan kata laluan yang dilupakan. Ia juga menjimatkan masa, kerana pengguna tidak perlu berulang kali memasukkan kelayakan mereka semasa mengakses aplikasi yang berbeza. mendapat manfaat daripada SSO. Industri yang sangat bergantung pada pelbagai aplikasi, seperti penjagaan kesihatan, pendidikan, kewangan, dan teknologi, terutamanya boleh mendapat manfaat daripada kemudahan dan keselamatan yang disediakan oleh SSO.
Atas ialah kandungan terperinci Daftar tunggal (SSO) dijelaskan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!