Модель безопасности протокола OpenID 2.0 построена на заявленном идентификаторе, а не на адресе электронной почты. Таким образом, лучший подход - сделать ваше Царство последовательным. Если вы можете сделать это, это лучший подход.
Также может быть хорошей идеей сохранить адрес электронной почты в таблице вашего пользователя, чтобы в случае изменения вашего царства (возможно, ваша компания была приобретена другой), вы сможете перенести свою пользователи. Но если вы планируете сделать это, вы также должны сохранить то, что было при использовании конечной точки OP во время аутентификации, когда вы получили адрес электронной почты, чтобы вы знали, можете ли вы доверять этому.
Как правило, доверять адресу электронной почты вообще небезопасно. Если вы доверяете Поставщику (в вашем случае Google), чтобы предоставить вам проверенные адреса электронной почты, то вы можете доверять адресам электронной почты , если , то вы подтверждаете, что это действительно Поставщик, который аутентифицировал пользователя. Это можно сделать только правильно, убедившись, что значение IAuthenticationResponse.Provider.Uri
является тем, которому вы доверяете. Это нельзя сделать неявным образом , просто предложив кнопку «Войти в Google» из-за Функция «незапрошенных утверждений» OpenID, которая позволяет пользователям входить в систему с произвольными провайдерами независимо от того, что RP предлагает в своем пользовательском интерфейсе. И это невозможно сделать, проверив домен заявленного идентификатора из-за разницы между заявленными и локальными идентификаторами.