계정 이름이 화면에 보이면 지금도 그 계정으로 로그인돼 있다고 받아들이기 쉽다. 하지만 이름은 예전에 저장한 표시일 수 있고 실제 사이트는 로그아웃됐을 수 있다. 나는 계정을 선택하기 편한 이름을 제공하면서도 그 이름이 현재 인증의 보증처럼 보이지 않도록 상태 문구와 관찰 근거를 나눴다.
알아보기 쉬운 이름과 확인 상태를 따로 만든다
describeTabAccount는 accountLabel과 accountStatus를 별도로 반환한다. 표시명은 미지정 여부, 사이트별 사용자 이름, 계정 옵션의 label, 저장 설정과 마지막 관찰명, 프로필 이름 같은 우선순위로 결정한다. 따라서 보여 주는 이름 하나가 반드시 방금 사이트에서 읽은 값은 아니다.
상태는 시크릿과 프로필 연결 필요, 선택된 계정의 로그인 확인 필요 등을 나눠 표현한다. 이름이 비어 있지 않다는 이유로 상태를 로그인 성공으로 덮지 않는다. 나는 업무 화면에서 사람에게 친숙한 표시와 기계가 확인한 사실을 같은 필드에 넣으면 나중에 근거를 설명하기 어렵다고 봤다.
로그인 흔적 발견은 목록 정리까지만 사용한다
일반 미지정 세션에 알려진 인증 쿠키 이름과 도메인의 변화가 보이면 플랫폼 로그인으로 발견한다. 이때 쿠키 값으로 계정명을 만들지 않는다. 단순 플랫폼 이름을 붙이고 미지정 표시를 해제한다. 이것은 사용자가 직접 로그인한 세션을 계정 목록에서 찾기 좋게 만드는 힌트다.
쿠키가 있다고 유효한 서버 세션이나 특정 사용자 ID가 입증되는 것은 아니다. 만료와 추가 확인이 있을 수 있고 원래 이름과 지금 화면의 계정이 다를 수도 있다. 앞서 빈 세션을 다룬 글이 계정 선택의 기본값에 관한 것이었다면, 이 글은 발견 뒤 어떤 표현을 신뢰할 수 있는가에 집중한다.
화면 관찰도 지원하는 위치를 정해 둔다
observeLoginHeader는 HTTPS의 정확한 지원 호스트에서만 헤더를 읽는다. Google·네이버·YouTube·GitHub 각각의 보이는 계정 요소와 로그인 표시를 살피고, 맞는 단서가 없으면 확인 필요를 돌려준다. 모든 하위 도메인과 임의 페이지의 이름을 같은 규칙으로 읽는 관찰기가 아니다.
읽은 label과 화면에서 로그인 확인이라는 상태가 함께 있을 때 마지막 관찰명을 저장하는 경로가 있다. 그 값도 관찰 당시의 화면 근거다. 사이트 헤더가 늦게 생기거나 바뀔 수 있어 계정 관리 화면에서 다시 관찰하는 절차가 있다. 이전에 읽은 문구를 영구 인증서처럼 취급하지 않는다.
사용자 별명은 최신 관찰을 가릴 수 있다
표시명의 우선순위에서 사이트별로 지정한 별명은 마지막 관찰명보다 앞에 있을 수 있다. 사용자가 “업무용”처럼 알아보기 쉬운 이름을 붙였다고 사이트의 실제 ID가 그 글자로 바뀌는 것은 아니다. 나는 별명을 보존하되 현재 계정을 확인해야 할 순간에는 실제 화면의 표시와 상태를 함께 읽도록 생각했다.
자동화를 시작하기 전에는 대상 프로젝트와 프로필이 맞는지 확인하고, 인증이 필요한 동작은 그 사이트에서 가능한지 봐야 한다. 헤더 관찰만으로 글 작성 권한과 승인 권한까지 보장하지 않는다. 로그인된 사용자와 이번 작업을 할 수 있는 사용자도 다를 수 있기 때문이다.
시험용 로그인 흔적을 실제 인증으로 보고하지 않는다
프로젝트 격리 시험은 소유한 fixture 세션에 가짜 인증 메타데이터를 넣어 미지정이 해제되는지 확인한다. 시험의 목적은 계정 발견 경로를 확인하는 것이다. 이 자료로 실제 플랫폼 로그인에 성공했다고 보고하면 시험을 통과한 의미가 완전히 달라진다.
계정 전환의 기존 단위 시험도 인증 callback 자료를 그대로 다른 탭 주소로 옮기지 않고 플랫폼 시작 화면으로 돌리는지 확인한다. 이 글에서는 해당 코드와 시험을 읽었으며 실제 사용자 쿠키를 출력하거나 복제하지 않았다. 새 로그인과 현장 권한 확인을 수행했다는 근거도 만들지 않았다.
확인 필요라는 상태도 유용한 결과다
업무 프로그램의 대표자 이름과 담당자 이름도 저장된 표시다. 실제로 접속한 사람과 처리 권한을 별도로 확인해야 하는 것처럼 계정 목록도 알아보기 쉬운 이름과 현재 상태를 함께 제공해야 한다. 모르는 상태를 성공처럼 꾸미면 사용자는 확인이 끝난 줄 알고 다음 작업을 맡길 수 있다.
나는 확인 필요를 실패한 화면으로만 보지 않는다. 어떤 근거가 아직 없는지 알려 주는 정확한 상태다. 이름이 남아 있고 세션이 발견됐어도 실제 사이트 관찰과 이번 권한 확인이 남을 수 있다. 그 단계를 구분해 보여 주는 것이 에이전트에게도 사람에게도 더 다루기 쉬운 계정 관리라고 생각한다.