2016-04-27 10 views
1

1つのweb-apiアプリケーション(y.x.com)とフロントエンドアプリケーション(z.x.com)の2つのアプリケーションがあります。 zxcomにアクセスするユーザーを認証するには、Visual Studio 2015で提供されているWeb APIテンプレートコードに従って、ws-federationまたはmicrosoftライブログインを使用します。ブラウザ、郵便配達員、フィドラーまたはWebアプリケーションから直接Web APIアプリケーション(yxcom)同様の認証はうまくいきますが、フロントエンドアプリケーションからサインインしようとするとerror: invalid_request(ステータス400)になります。フロントエンドアプリケーションからws-federationを使用してアプリケーションにログイン

今度は、を呼び出して、アプリケーションz.x.comからサインインすることができるのだろうかと思います。 y.x.comでの私のstartup.authこの

 OAuthOptions = new OAuthAuthorizationServerOptions 
     { 
      TokenEndpointPath = new PathString("/Token"), 
      Provider = new ApplicationOAuthProvider(PublicClientId), 
      AuthorizeEndpointPath = new PathString("/Account/ExternalLogin"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
      // In production mode set AllowInsecureHttp = false 
      AllowInsecureHttp = true 
     }; 

     // Enable the application to use bearer tokens to authenticate users 
     app.UseOAuthBearerTokens(OAuthOptions); 

     var wsOptions = new WsFederationAuthenticationOptions 
     { 
      MetadataAddress = "https://login.microsoftonline.com/afd2d5a6-bdb1-43f8-a42b-83ec49f1f22d/federationmetadata/2007-06/federationmetadata.xml", 
      Wtrealm = "http://y.x.com/", 
      Notifications = new WsFederationAuthenticationNotifications() 
     }; 
     app.UseWsFederationAuthentication(wsOptions); 

のように見えます

私はより多くのコードを提供することができますが、私はまったく機能しなければならない場合では、主に興味があります。おかげさまで

答えて

1

これも可能です。何か掘り下げて、web-apiテンプレートの中にValidateClientRedirectUriという名前のメソッドがあるとわかりました。クラスApplicationOAuthProviderにあります。私は

public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context) 
{ 
    context.Validated(); 
    return Task.FromResult<object>(null); 
} 

にその方法を変更して、私のフロントエンドアプリケーションから私は今までのWeb APIアプリケーションを介してフロントエンドアプリケーションからサインインすることを可能にする、私が好きなの戻りURLを持つことができる場合外部ソース。

関連する問題