- 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.
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.
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.
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Python's Unittest and Pytest adalah dua kerangka ujian yang digunakan secara meluas yang memudahkan penulisan, penganjuran dan menjalankan ujian automatik. 1. Kedua -duanya menyokong penemuan automatik kes ujian dan menyediakan struktur ujian yang jelas: Unittest mentakrifkan ujian dengan mewarisi kelas ujian dan bermula dengan ujian \ _; Pytest lebih ringkas, hanya memerlukan fungsi bermula dengan ujian \ _. 2. Mereka semua mempunyai sokongan dakwaan terbina dalam: Unittest menyediakan kaedah AssertEqual, AssertTrue dan lain-lain, manakala PYTest menggunakan pernyataan menegaskan yang dipertingkatkan untuk memaparkan butiran kegagalan secara automatik. 3. Semua mempunyai mekanisme untuk mengendalikan penyediaan ujian dan pembersihan: un

Pythonisidealfordataanalysisysisduetonumpyandpandas.1) numpyexcelsatnumericalcomputationswithfast, multi-dimensiArarraySandvectorizedoperationsLikenp.sqrt ()

Pengaturcaraan Dinamik (DP) mengoptimumkan proses penyelesaian dengan memecahkan masalah kompleks ke dalam subproblem yang lebih mudah dan menyimpan hasilnya untuk mengelakkan pengiraan berulang. Terdapat dua kaedah utama: 1. Top-down (Hafalan): Recursif menguraikan masalah dan menggunakan cache untuk menyimpan hasil pertengahan; 2. Bottom-Up (Jadual): Bangun secara beransur-ansur dari keadaan asas. Sesuai untuk senario di mana nilai maksimum/minimum, penyelesaian optimum atau subproblem yang bertindih diperlukan, seperti urutan Fibonacci, masalah backpacking, dan lain -lain.

Untuk melaksanakan iterator tersuai, anda perlu menentukan kaedah __iter__ dan __Next__ di dalam kelas. ① Kaedah __iter__ mengembalikan objek iterator itu sendiri, biasanya diri sendiri, bersesuaian dengan persekitaran berulang seperti untuk gelung; ② Kaedah __Next__ mengawal nilai setiap lelaran, mengembalikan elemen seterusnya dalam urutan, dan apabila tidak ada lagi item, pengecualian hentian harus dibuang; ③ Status mesti dikesan dengan betul dan keadaan penamatan mesti ditetapkan untuk mengelakkan gelung tak terhingga; ④ Logik kompleks seperti penapisan talian fail, dan perhatikan pembersihan sumber dan pengurusan memori; ⑤ Untuk logik mudah, anda boleh mempertimbangkan menggunakan hasil fungsi penjana sebaliknya, tetapi anda perlu memilih kaedah yang sesuai berdasarkan senario tertentu.

Trend masa depan dalam Python termasuk pengoptimuman prestasi, jenis yang lebih kuat, peningkatan runtime alternatif, dan pertumbuhan berterusan bidang AI/ML. Pertama, Cpython terus mengoptimumkan, meningkatkan prestasi melalui masa permulaan yang lebih cepat, pengoptimuman panggilan fungsi dan operasi integer yang dicadangkan; Kedua, jenis petikan sangat terintegrasi ke dalam bahasa dan alat untuk meningkatkan pengalaman keselamatan dan pembangunan kod; Ketiga, runtime alternatif seperti Pyscript dan Nuitka menyediakan fungsi baru dan kelebihan prestasi; Akhirnya, bidang AI dan Sains Data terus berkembang, dan perpustakaan yang muncul mempromosikan pembangunan dan integrasi yang lebih cekap. Trend ini menunjukkan bahawa Python sentiasa menyesuaikan diri dengan perubahan teknologi dan mengekalkan kedudukan utama.

Modul soket Python adalah asas pengaturcaraan rangkaian, menyediakan fungsi komunikasi rangkaian peringkat rendah, sesuai untuk membina aplikasi klien dan pelayan. Untuk menyediakan pelayan TCP asas, anda perlu menggunakan socket.socket () untuk membuat objek, mengikat alamat dan port, panggilan. Listen () untuk mendengar sambungan, dan menerima sambungan klien melalui .accept (). Untuk membina klien TCP, anda perlu membuat objek soket dan panggilan .Connect () untuk menyambung ke pelayan, kemudian gunakan .sendall () untuk menghantar data dan .recv () untuk menerima respons. Untuk mengendalikan pelbagai pelanggan, anda boleh menggunakan 1. Threads: Mulakan benang baru setiap kali anda menyambung; 2. Asynchronous I/O: Sebagai contoh, Perpustakaan Asyncio dapat mencapai komunikasi yang tidak menyekat. Perkara yang perlu diperhatikan

Polimorfisme adalah konsep teras dalam pengaturcaraan berorientasikan objek Python, merujuk kepada "satu antara muka, pelbagai pelaksanaan", yang membolehkan pemprosesan bersatu pelbagai jenis objek. 1. Polimorfisme dilaksanakan melalui penulisan semula kaedah. Subkelas boleh mentakrifkan semula kaedah kelas induk. Sebagai contoh, kaedah bercakap () kelas haiwan mempunyai pelaksanaan yang berbeza dalam subkelas anjing dan kucing. 2. Penggunaan praktikal polimorfisme termasuk memudahkan struktur kod dan meningkatkan skalabilitas, seperti memanggil kaedah cabutan () secara seragam dalam program lukisan grafik, atau mengendalikan tingkah laku umum watak -watak yang berbeza dalam pembangunan permainan. 3. Polimorfisme pelaksanaan Python perlu memenuhi: Kelas induk mentakrifkan kaedah, dan kelas kanak -kanak mengatasi kaedah, tetapi tidak memerlukan warisan kelas induk yang sama. Selagi objek melaksanakan kaedah yang sama, ini dipanggil "jenis itik". 4. Perkara yang perlu diperhatikan termasuk penyelenggaraan

Jawapan teras kepada pengirim senarai Python adalah menguasai sintaks [Start: End: Step] dan memahami kelakuannya. 1. Format asas pengirim senarai adalah senarai [Mula: akhir: langkah], di mana permulaan adalah indeks permulaan (termasuk), akhir adalah indeks akhir (tidak termasuk), dan langkah adalah saiz langkah; 2. Omit Mula secara lalai bermula dari 0, endek akhir secara lalai hingga akhir, omite langkah secara lalai kepada 1; 3. Gunakan my_list [: n] untuk mendapatkan item n pertama, dan gunakan my_list [-n:] untuk mendapatkan item n yang terakhir; 4. Gunakan langkah untuk melangkau unsur -unsur, seperti my_list [:: 2] untuk mendapatkan angka, dan nilai langkah negatif dapat membalikkan senarai; 5. Kesalahpahaman biasa termasuk indeks akhir tidak
