2016-08-18 2 views
2

때때로 클라이언트에 두 개 이상의 리디렉션 URI가 있습니다. RedirectUri 값을 여러 개 등록 할 수 있기를 원합니다. 어떻게, 어쨌든 우리가 그렇게합니까? 여러 redirect_uri 지정다중 등록 RedirectUris

context.Applications.Add(new OpenIddictApplication 
{ 
    ClientId = "zamboni-app", 
    ClientSecret = Crypto.HashPassword("secret_secret_secret"), 
    DisplayName = "Zamboni app", 
    LogoutRedirectUri = "http://zamboni-app.azurewebsites.net/signout-oidc", 
    RedirectUri = "http://zamboni-app.azurewebsites.net/signin-oidc", 
    Type = OpenIddictConstants.ClientTypes.Public 
}); 

답변

1

은 의도적으로 모든 응용 프로그램에 대해 동일한 클라이언트 등록을 (client_id 읽기) 재사용에서 당신을 방지하기 위해 OpenIddict 지원하지 않습니다.

+0

을 우리가 모두 유효한 리디렉션 URI를 가질 수없는 경우 한 도메인에서 다른 도메인으로 이동하는 클라이언트 응용 프로그램을 처리하기위한 것입니다 어떻게? (모든 사람들이 사용하기 전에 새로운 도메인에서 모든 것이 작동하는지 확인하고 싶습니다.) – Lukazoid

+0

@ 루카 조이드 (Lukazoid) 설계 결정을 부인하고 질문에 대한 답변을 기대하기 때문에 답을 하향 표시 할 수는 없습니다. – Pinpoint

+0

그건 괜찮아. 나는 혼자 해결책을 찾아 냈어. 나는 그것이 유용하지 않기 때문에 당신의 답을 떨어 뜨렸다. 적어도 내가 유용한 대답이라고 생각하지 않는 이유를 설명하는 코멘트를 남겼습니다. 내 downvote를 그렇게 개인적으로 가져간 것이 유감입니다. – Lukazoid

0

클라이언트 응용 프로그램이 여러 도메인에서 액세스 할 수 있어야 할 때도 필요합니다 (대부분의 OAuth 공급자가 허용하는 이유가 있습니다).

당신은 ValidateRedirectUriAsync 방법 OpenIddictApplicationManager<TApplication>에서 파생 된 새로운 클래스를 생성하고 재정 의하여 클라이언트 응용 프로그램에 대해 여러 리디렉션 URI를 허용 할 수 있습니다 :이 예에서

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>(); 
+1

'대부분의 OAuth 제공 업체가 허용하는 이유가 있습니다'는 근거없는 주장입니다. Facebook, Reddit, Dropbox 또는 Box와 같은 주요 제공 업체에서는 여러 콜백 주소를 등록 할 수 없습니다. 그리고 네, 그 이유도 있습니다. – Pinpoint

+0

그러나 페이스 북은 여러 개의 리다이렉트 URI를 허용하지만 아직 다른 사람들을 보지 않았습니다. – Lukazoid

+0

고급 옵션 만 사용하는 경우. 그렇지 않으면 하나의 주소 만 허용됩니다. – Pinpoint