Rumah >pembangunan bahagian belakang >Tutorial Python >Daftar tunggal (SSO) dijelaskan

Daftar tunggal (SSO) dijelaskan

Jennifer Aniston
Jennifer Anistonasal
2025-02-25 08:32:09320semak imbas

Daftar tunggal (SSO) dijelaskan

Kunci Takeaways

    Single Sign-On (SSO) adalah proses yang membolehkan pengguna mengakses pelbagai perkhidmatan selepas mengesahkan identiti mereka sekali sahaja, yang menghapuskan keperluan untuk mengulangi identiti berulang kali melalui kata laluan atau sistem lain.
  • Melaksanakan SSO boleh memberi manfaat apabila membangunkan produk yang berinteraksi dengan perkhidmatan lain atau apabila menggunakan perkhidmatan pihak ketiga, kerana ia memastikan pengguna tidak perlu log masuk secara berasingan ke setiap perkhidmatan.
  • Walaupun proses SSO sedikit berbeza di seluruh perkhidmatan yang berbeza, idea asas tetap sama: menghasilkan token dan mengesahkannya. Langkah-langkah keselamatan yang kuat, seperti pengesahan multi-faktor dan kemas kini kata laluan biasa, harus dilaksanakan untuk mengurangkan risiko yang berkaitan dengan SSO.
  • Apabila anda membangunkan produk untuk orang ramai, sangat jarang anda akan menghasilkan produk yang benar -benar berdiri sendiri yang tidak berinteraksi dengan perkhidmatan lain. Apabila anda menggunakan perkhidmatan pihak ketiga, pengesahan pengguna adalah tugas yang agak sukar, kerana aplikasi yang berbeza mempunyai mekanisme yang berbeza untuk mengesahkan pengguna. Salah satu cara untuk menyelesaikan masalah ini adalah melalui tanda tunggal, atau SSO.

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

Proses asas SSO adalah seperti berikut:

Langkah pertama adalah log masuk ke perkhidmatan utama (Facebook atau Google, misalnya).
  • Apabila anda melawat perkhidmatan baru, ia mengarahkan anda ke perkhidmatan asal (atau ibu bapa) untuk memeriksa sama ada anda log masuk pada yang satu.
  • token OTP (satu kali kata laluan) dikembalikan.
  • Token OTP kemudiannya disahkan oleh perkhidmatan baru dari pelayan ibu bapa, dan hanya selepas pengesahan yang berjaya adalah entri yang diberikan pengguna.
  • Walaupun membuat API untuk SSO adalah tugas yang membosankan, terutamanya dalam mengendalikan keselamatan, pelaksanaan adalah tugas yang agak mudah!

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.

Apabila anda membina produk anda sendiri, anda perlu memastikan bahawa semua komponennya menggunakan pengesahan yang sama. Ini mudah dilakukan apabila semua perkhidmatan anda terhad kepada asas kod anda sendiri. Walau bagaimanapun, dengan perkhidmatan yang popular seperti Sistem Komen Disqus dan Freshdesk untuk pengurusan hubungan pelanggan, adalah idea yang baik untuk menggunakannya daripada membuat anda sendiri dari awal.

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

Disqus adalah perkhidmatan hosting komen yang popular untuk laman web, yang menyediakan beban ciri seperti integrasi rangkaian sosial, alat kesederhanaan, analisis, dan juga keupayaan untuk mengeksport komen. Ia bermula sebagai permulaan ycombinator dan telah berkembang menjadi salah satu laman web yang paling popular di dunia!

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

Contoh kod python (terdapat di GitHub untuk log masuk pengguna di laman web anda adalah seperti berikut.

<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

Anda kemudian menghantar token yang dihasilkan ini, bersama -sama dengan kunci awam anda kepada Disqus dalam permintaan JavaScript. Sekiranya pengesahan disahkan, sistem komen yang dihasilkan mempunyai pengguna yang sudah log masuk. Jika anda menghadapi masalah, anda boleh meminta bantuan dalam pemaju disqus Google Group.

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.

Daftar tunggal (SSO) dijelaskan

Seterusnya, log masuk ke Blog Bowl, lawati jawatan yang sama sekali lagi (anda perlu log masuk untuk melihat kesannya). Perhatikan bahawa anda log masuk ke sistem komen di bawah.

Daftar tunggal (SSO) dijelaskan 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: Daftar tunggal (SSO) dijelaskan

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.

Jika anda mempunyai pembetulan, soalan, atau mempunyai pengalaman anda sendiri untuk berkongsi dengan SSO, jangan ragu untuk memberi komen.

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.

Bagaimanakah Single Sign-On (SSO) berfungsi? SSO berfungsi dengan mewujudkan hubungan yang dipercayai antara pelbagai aplikasi atau laman web. Apabila pengguna log masuk ke satu aplikasi, sistem SSO mengesahkan kelayakan pengguna dan mengeluarkan tanda keselamatan. Token ini kemudiannya digunakan untuk mengesahkan pengguna untuk aplikasi lain dalam sistem SSO, menghapuskan keperluan untuk pelbagai log masuk. SSO menawarkan beberapa faedah. Ia memudahkan pengalaman pengguna dengan mengurangkan keperluan untuk pelbagai log masuk, dengan itu menjimatkan masa dan mengurangkan kekecewaan. Ia juga meningkatkan keselamatan dengan meminimumkan risiko pelanggaran yang berkaitan dengan kata laluan. Di samping itu, ia dapat mengurangkan kosnya dengan mengurangkan bilangan permintaan semula kata laluan.

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.

Bagaimana Single Sign-On (SSO) Meningkatkan Keselamatan? Ini mengurangkan kemungkinan kata laluan yang lemah atau digunakan semula, yang merupakan sasaran umum untuk cyberattacks. Di samping itu, banyak penyelesaian SSO menggabungkan langkah-langkah keselamatan tambahan, seperti pengesahan dan penyulitan multi-faktor, untuk melindungi data pengguna lagi. > Ya, kebanyakan penyelesaian SSO boleh diintegrasikan dengan sistem sedia ada. Walau bagaimanapun, proses integrasi mungkin berbeza -beza bergantung kepada penyelesaian SSO tertentu dan sistem yang ada. Adalah penting untuk bekerjasama dengan pasukan IT yang berpengalaman atau penyedia SSO untuk memastikan integrasi yang lancar dan selamat.

Atas ialah kandungan terperinci Daftar tunggal (SSO) dijelaskan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn