๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์ธ์ฆ (authentication)

๐Ÿ”” ์ตœ์‹ ํ™” ์ผ์ž: 2025-02-06

๊ฐœ์š”โ€‹

authentication ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์•ฑ ๋‚ด ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒ์ฒด ์ธ์ฆ(Biometrics) ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์ƒ์ฒด ์ธ์ฆ์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํƒ€์ž… ์ •์˜โ€‹

AuthenticationResultโ€‹

์ธ์ฆ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

ํ•„๋“œํƒ€์ž…์„ค๋ช…
authenticatedboolean์ธ์ฆ ์„ฑ๊ณต ์—ฌ๋ถ€ (true: ์ธ์ฆ๋จ, false: ์ธ์ฆ ์‹คํŒจ)
error (optional){ code: string, message: string }์ธ์ฆ ์‹คํŒจ ์‹œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ์ฝ”๋“œ ๋ฐ ๋ฉ”์‹œ์ง€

๋ฉ”์„œ๋“œ ๋ชฉ๋กโ€‹

๋ฉ”์„œ๋“œ์„ค๋ช…์ถ”๊ฐ€๋œ ๋ฒ„์ „
canUseBiometrics(callback)๋””๋ฐ”์ด์Šค์—์„œ ์ƒ์ฒด ์ธ์ฆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.ver.1.3.0
useBiometrics(callback)์ƒ์ฒด ์ธ์ฆ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.ver.1.3.0

๋ฉ”์„œ๋“œ ์ƒ์„ธโ€‹

canUseBiometrics(callback: (available: boolean, error?: { code: string, message: string }) => any): voidโ€‹

  • since ver.1.3.0

์„ค๋ช… (canUseBiometrics)โ€‹

ํ˜„์žฌ ๋””๋ฐ”์ด์Šค์—์„œ ์ƒ์ฒด ์ธ์ฆ(Biometrics) ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ถ€ ๋””๋ฐ”์ด์Šค์—์„œ๋Š” ์ƒ์ฒด ์ธ์ฆ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์„ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ (canUseBiometrics)โ€‹

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜ ์—ฌ๋ถ€์„ค๋ช…
callback(available: boolean, error?: { code: string, message: string }) => anyโœ…true(์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋˜๋Š” false(์‚ฌ์šฉ ๋ถˆ๊ฐ€)๋ฅผ ์ „๋‹ฌ ๋ฐ›๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜

๋ฐ˜ํ™˜ ๊ฐ’ (canUseBiometrics)โ€‹

ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฉฐ, ๊ฒฐ๊ณผ๋Š” callback์„ ํ†ตํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ (canUseBiometrics)โ€‹

// ex. ๋””๋ฐ”์ด์Šค์˜ ์ƒ์ฒด ์ธ์ฆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
Nachocode.authentication.canUseBiometrics((available, error) => {
// ๋””๋ฐ”์ด์Šค์˜ ์ƒ์ฒด ์ธ์ฆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๊ฐ€ ๋งค๊ฐœ ๋ณ€์ˆ˜ available์— ์ „๋‹ฌ ๋ฉ๋‹ˆ๋‹ค.
if (available) {
console.log('์ƒ์ฒด ์ธ์ฆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ');
} else {
// ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•  ๊ฒฝ์šฐ, ์‚ฌ์œ ๊ฐ€ error.message์— ๋‹ด๊ฒจ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
console.log(`์ƒ์ฒด ์ธ์ฆ ์‚ฌ์šฉ ๋ถˆ๊ฐ€: ${error?.message || '์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜'}`);
}
});

useBiometrics(callback: (result: AuthenticationResult) => any): voidโ€‹

  • since ver.1.3.0

์„ค๋ช… (useBiometrics)โ€‹

๋””๋ฐ”์ด์Šค์˜ ์ƒ์ฒด ์ธ์ฆ(Biometrics) ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์„ ์„ฑ๊ณตํ•˜๋ฉด authenticated: true ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ธ์ฆ์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จ๋  ๊ฒฝ์šฐ error ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜์—ฌ ์‹คํŒจ ์›์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ (useBiometrics)โ€‹

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜ ์—ฌ๋ถ€์„ค๋ช…
callback(result: AuthenticationResult) => anyโœ…์ธ์ฆ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌ ๋ฐ›๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜

๋ฐ˜ํ™˜ ๊ฐ’ (useBiometrics)โ€‹

ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฉฐ, ๊ฒฐ๊ณผ๋Š” callback์„ ํ†ตํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ (useBiometrics)โ€‹

// ๋„ค์ดํ‹ฐ๋ธŒ ์ƒ์ฒด ์ธ์ฆ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœ ํ•ฉ๋‹ˆ๋‹ค.
Nachocode.authentication.useBiometrics(result => {
const message =
`์ธ์ฆ ์—ฌ๋ถ€ : ${result.authenticated ? '์ธ์ฆ๋จ' : '์ธ์ฆ์•ˆ๋จ'}\n` +
`์ƒํƒœ ์ฝ”๋“œ : ${result.error?.code ?? '์—†์Œ'}\n` +
`์—๋Ÿฌ ๋ฉ”์‹œ์ง€ : ${result.error?.message ?? '์—†์Œ'}`;

alert(message);
});