facebook이 Redirect URI를 위해 Strict Mode를 사용하고 싶어합니다.
In 90 days, we're making a security update to Facebook Login that will invalidate calls from URIs not listed in the Valid OAuth redirect URIs field of your Facebook Login settings.
This update comes in response to malicious activity we saw on our platform, and we want to protect your app or website by requiring a new strict mode for redirect URIs. Take action now to ensure your redirect traffic continues to work. Learn More
모뇨 모뇨 말했다.
요컨대 90 일 이내에 strict mode로하지 않으면 안된다는 것일까
좋은 기회이므로 검토하기로 했다.
python-social-auth로 환승
로 환승했다.
python-social-auth/social-app-django 그래서,
settings.py
설정 변경 구현 방법을 결정했다
redirect_state
를 고정하거나 제거하는 방법 중 하나이지만 redirect_state
를 고정하는 방향으로 구현하기로 결정했습니다.backend를 자작
그렇다고 해도 전혀 어려운 일은 하지 않고, 클래스를 계승해, 대상 메소드를 덧쓰기했을 뿐.
custom_backends.py
from social_core.backends.facebook import FacebookOAuth2
class FacebookOAuth2Override(FacebookOAuth2):
# 現在はデフォルトでTrueなので、これはなくても良い
REDIRECT_STATE = True
# get_or_create_stateを上書く
def get_or_create_state(self):
if self.STATE_PARAMETER or self.REDIRECT_STATE:
# Store state in session for further request validation. The state
# value is passed as state parameter (as specified in OAuth2 spec),
# but also added to redirect, that way we can still verify the
# request if the provider doesn't implement the state parameter.
# Reuse token if any.
name = self.name + '_state'
state = self.strategy.session_get(name)
try:
# settings.pyのSOCIAL_AUTH_FACEBOOK_REDIRECT_STATEを見に行く
static_state = self.strategy.get_setting('SOCIAL_AUTH_FACEBOOK_REDIRECT_STATE')
# sessionに保存する必要があるかどうか
if state != static_state:
self.strategy.session_set(name, static_state)
state = static_state
except:
# SOCIAL_AUTH_FACEBOOK_REDIRECT_STATEがない場合
# sessionにも何も保管されていなかったら新たに取得する
if state is None:
state = self.state_token()
self.strategy.session_set(name, state)
else:
state = None
return state
상기를 적당한 곳에서 (예를 들면
myapp/custom_backends.py
하면)settings.py
AUTHENTICATION_BACKENDS = (
'social_core.backends.twitter.TwitterOAuth',
# 'social_core.backends.facebook.FacebookOAuth2',
'myapp.custom_backends.FacebookOAuth2Override',
'django.contrib.auth.backends.ModelBackend',
)
SOCIAL_AUTH_FACEBOOK_REDIRECT_STATE = '{{static_state}}'
지금의 곳 이런 느낌으로 문제 없을 것 같다.
페이스 북 측 설정도 잊지 마세요 :(
추가
위에서 준 이슈지만 fix되었습니다.
social_core.backends.facebook.FacebookOAuth2 should have REDIRECT_STATE set to False · Issue #141 · python-social-auth/social-core
그래서 위의 작업은 불필요하네요.
redirect state를 사용하지 않는 것 같습니다.
Reference
이 문제에 관하여(facebook이 Redirect URI를 위해 Strict Mode를 사용하고 싶어합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/pyonk/items/f46ed6ad90b918806d91
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(facebook이 Redirect URI를 위해 Strict Mode를 사용하고 싶어합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pyonk/items/f46ed6ad90b918806d91텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)