2016-08-18 13 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

は、そのようにように、このアプリケーションマネージャを登録してください? (誰もが新しいドメインに移行する前に、すべてのドメインが新しいドメイン上で動作することを確認したい) – Lukazoid

+0

@ルカゾイドあなたはデザインの決定を却下し、あなたの質問に対する答えを期待しているので、答えを下降させることはできません。 – Pinpoint

+0

それは大丈夫です、私は自分で解決策を見つけました。私はそれが役に立たないのであなたの答えを下落させた。少なくとも私はそれが有用な答えだと感じない理由を説明するコメントを残しました。私はあなたが私のdownvoteを個人的にそうしてしまってすみません。 – Lukazoid

0

クライアントアプリケーションに複数のドメインからアクセスする必要がある場合(これには、ほとんどのOAuthプロバイダがこれを許可している理由があります)の要件もありました。

あなたはOpenIddictApplicationManager<TApplication>から派生した新しいクラスを作成し、ValidateRedirectUriAsync方法オーバーライドすることで、クライアントアプリケーションのための複数のリダイレクト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を含む追加のフィールドを持っていますこれはデータベース内の別のエンティティとの関係になります。我々は両方の有効なリダイレクトURIを持つことができない場合、あるドメインから別のドメインに移動するクライアントアプリケーションを処理するために意図されている方法

services.AddOpenIddict<MyApplication, OpenIdAuthorization, OpenIdScope, OpenIdToken>() 
    .AddApplicationManager<MyApplicationManager>(); 
+1

「ほとんどのOAuthプロバイダがこれを許可する理由がある」というのは根拠のない主張です。 Facebook、Reddit、Dropbox、Boxなどの主なプロバイダは、複数のコールバックアドレスを登録することを許可していません。そして、ええ、その理由もあります。 – Pinpoint

+0

しかし、Facebookは複数のリダイレクトURIを許可していますが、私はまだ他のものを見ていません。 – Lukazoid

+0

詳細オプションを使用する場合のみ。それ以外の場合は、1つのアドレスのみが許可されます。 – Pinpoint

関連する問題