2011-01-17 2 views
1

OpenID, OAuth (Twitter) 및 OAuth 2.0 (Facebook)이 포함 된 내 웹 사이트의 확장 로그인 /) 옵션에 로그인하십시오.OpenID, OAuth 및/또는 OAuth 2.0을 사용하여 인증 할 때 각 요청의 로그인 상태를 평가합니다.

일단 사용자가 인증을 성공적으로 완료하고 데이터베이스에 액세스 토큰을 저장하고 사용자를 로그인 상태에 연결하는 쿠키를 작성한 경우 사용자의 액세스 토큰이 여전히 유효한지 확인하기 위해 사용해야 할 가장 좋은 방법은 무엇입니까? ? 내 사이트에 대한 모든 단일 요청에 대해 인증 공급자를 호출해야만 사용자의 작업 속도가 느려지고 다른 사이트에서 수행하고있는 작업을 상상할 수없는 것처럼 보입니다.

내 생각에 현재 브라우저 세션에서만 유효하며 사용자가 브라우저를 닫을 때 쿠키가 만료되어 다음 요청에서 새로운 액세스 토큰이 생성되도록해야합니다. 일치시킬 새 쿠키). 또한 사용자가 명시 적으로 로그 아웃하면 쿠키가 일찍 만료됩니다.

예를 들어, 사용자가 내 사이트를 탭으로 연 다음 다른 탭에서 인증 공급자를 열고 해당 사이트에서 로그 아웃했지만 내 사이트를 계속 탐색하는 경우 유일한 질문은 물론 있습니다. 기술적으로는 제 3 자 제공 업체를 통해 로그 아웃 할 수 있다고하더라도 내 사이트에서 로그 아웃되지는 ​​않습니다.

"정말 중요하지 않은"시나리오 중 하나입니까, 아니면 모든 것을 잘못된 방식으로 접근합니까?

답변

3

확실히 서비스 제공자는 이 아닙니다.은 서비스에 제공되는 모든 요청에 ​​대해 서비스를 ping하고 싶습니다. 심지어 구글은 의 생각에서 그을 괴롭힌다. 5 분마다 점검하도록 일종의 시간 초과를 설정할 수 있지만 세션 쿠키에 대한 생각은 이상적인 것입니다. 하지만 네, 그것은 당신이 성취하고자하는 것에 달려 있습니다.

사용자를 로그인하기 위해이 서비스를 사용하는 경우 사용자가 로그인했는지 확인하고 자신의 세션이나 영구 쿠키를 설정하는 즉시 액세스 토큰을 버리십시오. 더 이상 액세스 토큰이 필요하지 않습니다.

이러한 서비스에서 사용자의 데이터에 액세스하려면 물론 액세스 토큰을 유지해야합니다. 하지만 여전히 사용자가 로그인했는지 여부에 대한 자신 만의 개념을 유지해야합니다. 이러한 액세스 토큰은 일반적으로 오래 기억됩니다 (어쨌든 OAuth 1.0a에서). 사용자가 반환 할 때 도움이되지 않습니다. 사용자는 자신의 쿠키가 있거나 로그인 서비스를 통해 다시 보내지 않는 한 자신이 말하는 사람입니다.

+0

지난 며칠 동안 나는이 방법을 직접 (액세스 토큰을 버리고) 결정했습니다.하지만이 작업이 합법적 인 과정임을 확인하는 것이 좋습니다. 유용한 답변 주셔서 감사합니다. –

0

로그인 목적으로 OAuth/OpenId를 사용하고 있다면 걱정할 필요가 없습니다. 사용자가 (OAuth/OpenId 제공 업체) 사용자라고 말하면 걱정할 필요가 있습니다.

웹 사이트가 트위터와 페이스 북과 상호 작용할 계획이라면 그건 다른 문제이지만, 여전히 꽤 많이 해결됩니다. FB와 상호 작용하려고 할 때 사용자가 거기에서 로그 아웃 한 동안 FB는 사용자에게 다시 로그인하라는 메시지를 표시합니다.

결론은 정말 문제가 아닌 것 같습니다.

관련 문제