HandyCafe Docs
owner it-admin

OAuth Login

Sinusuportahan ng HandyCafe ang social/OAuth login para sa mga customer gamit ang Device Authorization Grant (RFC 8628). Idinisenyo ang daloy na ito para sa kiosk at pampublikong kapaligiran kung saan hindi ligtas na maipasok ng mga customer ang mga kredensyal sa mga nakabahaging PC.

Mga Sinusuportahang Provider

Provider Endpoint
Google oauth2.googleapis.com
Facebook graph.facebook.com/v21.0
Apple appleid.apple.com
X (Twitter) api.x.com/2/oauth2
Discord discord.com/api/oauth2

Ang bawat provider ay maaaring indibidwal na i-enable o i-disable sa Mga Setting > OAuth.

Daloy ng Pagpapatotoo

Ang daloy ng awtorisasyon ng device ay nagpapatuloy sa mga sumusunod na hakbang:

  1. Pumili ng provider ang customer -- sa idle screen ng client, tina-tap ng customer ang isang button ng provider (hal., Google, Discord).
  2. Nagpapadala ang kliyente ng kahilingan sa server -- inaabisuhan ng kliyente ang server ng HandyCafe na pinasimulan ang isang OAuth login.
  3. Humiling ang server ng code ng device -- nakikipag-ugnayan ang server sa endpoint ng awtorisasyon ng device ng napiling provider at tumatanggap ng code ng device, user code, at URI ng pag-verify.
  4. Ipinapakita ng kliyente ang code -- ipinapakita ng kliyente ang user_code at verification_uri sa customer, na karaniwang ginagawa bilang isang QR code para sa madaling pag-scan.
  5. Nagpapatotoo ang customer sa kanilang telepono -- ini-scan ng customer ang QR code gamit ang kanilang personal na device (telepono o tablet) at kinukumpleto ang pagpapatotoo sa website ng provider.
  6. Server polls para sa token -- pana-panahong binoboto ng server ang provider para sa isang token. Kasama sa mga estado ng botohan ang:
    • Nakabinbin -- hindi pa nakumpleto ng customer ang pagpapatotoo.
    • SlowDown -- masyadong madalas ang pagboto; umaatras ang server.
    • Tagumpay -- nakumpleto ang pagpapatunay; natanggap na token.
    • Expired -- ang code ng device ay nag-expire na bago ang authentication.
    • Error -- may naganap na hindi inaasahang error.
  7. Kinukuha ng server ang impormasyon ng user -- sa tagumpay, ginagamit ng server ang token upang kunin ang profile ng customer mula sa provider, kasama ang provider_uid, email, name, at avatar_url.
  8. Inaprubahan o tinatanggihan ng Admin -- lumilitaw ang kahilingan sa pag-log in sa Pahina ng Mga Kahilingan. Ang isang admin o cashier ay nagsusuri at nag-apruba o tumatanggi sa kahilingan.
  9. Nilikha o na-link ang miyembro -- kung naaprubahan, gagawa ng bagong account ng miyembro o naka-link ang pagkakakilanlan ng OAuth sa isang umiiral nang miyembro.
  10. Magsisimula ang session ng kliyente -- ang kliyente ay tumatanggap ng kumpirmasyon at magsisimula ang session ng customer.

Mga Pagsasaalang-alang sa Seguridad

  • Hindi kailanman hinawakan ng mga kredensyal ang nakabahaging PC. Ang mga customer ay nagpapatotoo sa kanilang mga personal na device lamang. Walang mga password o token ang ipinasok sa client machine.
  • Gate ng pag-apruba ng admin. Ang bawat pagpasok sa pag-log in sa OAuth ay dapat maaprubahan ng isang admin o cashier bago magsimula ng isang session, na pumipigil sa hindi awtorisadong pag-access.
  • Kinakailangan ng kredito na maaaring i-configure. Maaaring i-enable o i-disable ang opsyong "payagan ang pag-log in nang walang credit", na kinokontrol kung kailangan ng mga customer ng positibong balanse upang mag-log in sa pamamagitan ng OAuth.

Configuration

Ang mga provider ng OAuth ay na-configure sa Mga Setting > OAuth. Ang bawat provider ay nangangailangan ng sarili nitong mga kredensyal ng kliyente (client ID at client secret) na nakuha mula sa developer console ng provider. Paganahin lamang ang mga provider na gusto mong ialok sa iyong mga customer.