У меня также было требование для этого, когда клиентское приложение должно быть доступно из нескольких доменов (есть причина, по которой большинство поставщиков OAuth это допускают).
Вы можете позволить несколько URI, переадресации для клиентского приложения, создавая новый класс, производный от OpenIddictApplicationManager<TApplication>
и перекрывая ValidateRedirectUriAsync
метод:
public sealed class MyApplicationManager : OpenIddictApplicationManager<MyApplication>
{
/// <inheritdoc />
public override Task<bool> ValidateRedirectUriAsync(MyApplication application, string address, CancellationToken cancellationToken)
{
var validRedirectUris = application.RedirectUris.Select(u => u.Uri);
if(validRedirectUris.Contains(address, StringComparer.Ordinal))
return Task.FromResult(true);
return Task.FromResult(false);
}
}
В этом примере MyApplication
имеет дополнительное поле, которое содержит URI переадресации, это может быть отношение к другому объекту в базе данных.
Тогда не забудьте зарегистрировать этот менеджер приложений следующим образом:
services.AddOpenIddict<MyApplication, OpenIdAuthorization, OpenIdScope, OpenIdToken>()
.AddApplicationManager<MyApplicationManager>();
Как мы имели в виду для обработки клиентского приложения, двигаясь из одного домена в другой, если мы не можем иметь и в качестве действительного URI переадресации? (Мы хотим проверить, что все работает над новым доменом, прежде чем все перейдут к его использованию). – Lukazoid
@ Lukazoid, вы не можете ответить на него только потому, что не одобряете дизайнерское решение и ожидаете ответа на свой вопрос. – Pinpoint
Все в порядке, я сам разобрался в решении. Я отклонил ваш ответ, потому что я не счел это полезным. По крайней мере, я оставил комментарий, объясняющий, почему я не чувствую, что это полезный ответ. Мне жаль, что ты так лично взял мой нижний план. – Lukazoid