Spring에서 핸드폰으로 인증문자 보내기

noReason·2021년 5월 8일
11

sms 문자 인증이 내 블로그 첫 기록이 될 거라고는 생각도 못 했다.
미루고 미루던 블로그 앞으로 열심히 써야지.

문자 인증 서비스 사용 이유

회원가입을 하기 위해서는 본인인증을 필수로 해야 하는데 여러 가지 방법들 중 이메일로 인증 메일 보내기는 이미 한번 경험했고, 예약 관리 앱을 만들고 있었기 때문에 문자 인증을 선택했다.

SMS API 서비스

문자 인증 API 서비스를 찾아보다가 제일 마음에 드는 사이트를 발견했다.

coolSMS : https://coolsms.co.kr/

Spring과 무료로 연동 가능하다는 게 제일 큰 장점이었다.
처음 가입을 하게 되면 본인인증 후 API 키를 발급받게 된다.
이때 문제가 하나 생기는데,, 난 대표번호가 없다는 것!

대표번호

개인번호를 대표번호로 등록해도 되지만 괜히 불안하고 걱정되는 마음에 번호를 하나 구하자 결정하고 열심히 조사해봤지만 비용이 만만치 않았고,, 죄송한 말이지만 좀 사기당하는 느낌이었다.
결국 이메일로 본인인증을 해야 하는 걸까 포기하기 직전에 좋은 앱을 발견했다.

아톡 : http://atalk.co.kr/

앱을 다운로드한 후 회원가입을 하게 되면 매달 2000원정도만 지불하고 070으로 시작하는 번호들 중에 마음에 드는 걸 골라 사용할 수 있게 된다.
아 처음에 무료로 포인트를 조금 주는데 테스트용으로는 충분하다.

Spring 연동

https://developer.coolsms.co.kr/JAVA_SDK_Example

링크 타고 나오는 페이지에서 원하는 기능을 선택 후 코드를 복사해가기만 하면 끝인데
SMS 단문문자를 사용했다.

public class MessageService {

	@Value("${coolsms.devHee.apikey}")
	private String apiKey;

	@Value("${coolsms.devHee.apisecret}")
	private String apiSecret;

	@Value("${coolsms.devHee.fromnumber}")
	private String fromNumber;

	public void sendMessage(String toNumber, String randomNumber) {

		Message coolsms = new Message(apiKey, apiSecret);

		HashMap<String, String> params = new HashMap<String, String>();
		params.put("to", toNumber);
		params.put("from", fromNumber);
		params.put("type", "SMS");
		params.put("text", "[grabMe] 인증번호 "+randomNumber+" 를 입력하세요.");
		params.put("app_version", "test app 1.2"); // application name and version

		try {
			JSONObject obj = (JSONObject) coolsms.send(params);
			System.out.println(obj.toString());
		} catch (CoolsmsException e) {
			System.out.println(e.getMessage());
			System.out.println(e.getCode());
		}
	}

}

보안상 apikey, apisecret, fromnumber는 다른 파일로 분리해서 사용했다.
서비스 파일로 만들어 놓은 후 컨트롤러에서 인증번호를 보내야 할 때 실행시켜주면 된다.

messageService.sendMessage(userPhone, cn);

userPhone : 인증문자를 받을 휴대폰 번호
cn : 랜덤으로 제작한 네자리수의 인증번호

문자


문자는 정상적으로 잘 도착한다.

profile
그냥 하는거지

2개의 댓글

comment-user-thumbnail
2021년 12월 6일

한번 보낼때 20원정도 드는데 유료로 사용하고 계신가요?

답글 달기
comment-user-thumbnail
2023년 8월 1일

문자 인증만 개발하시는거라면 https://www.oauth.network/
한번 보시면 좋을것 같습니다. 월 300건 무료이며
다른 점은 인증 방식이 사용자가 문자를 전송해서 인증하는 방식입니다.

답글 달기