0

私はASP.NET MVCプロジェクトを持ち、ASP.NET IDと共にフォーム認証(Cookieベース)を使用しています。私はそのプロジェクトにWEB APIコントローラを追加しました。今私が望むのは、MVCプロジェクトではCookieを使用してフォーム認証を使用する必要がありますが、APIに対してはトークンベースを使用する必要があります。MVCプロジェクト(認証)のWeb API

よろしく、 イムラン・アフマド

答えて

0

は、まずこれらのNuGetパッケージ、

1.Install、パッケージMicrosoft.AspNet.WebApi.Owin

2インストール・パッケージMicrosoft.Owin.Hostをインストールします。 SystemWeb

3.Install、パッケージMicrosoft.Owin.Security.OAuth

、その後、プロジェクトが持つしなければなりませんStartUp.csファイル。
エンドポイントに掲示することによりあなたはポストマンAPIクライアントを使用してコードをテストすることができ

public class AuthorizationServerProvider: OAuthAuthorizationServerProvider 
{ 
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) 
    { 
     context.Validated(); 
    } 

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
    { 
     var identity = new ClaimsIdentity(context.Options.AuthenticationType); 
     context.Validated(identity); 
    } 
} 

を提出新しいAuthorizationServerProvider.csにこのコードを追加し、あなたのファイル

OAuthAuthorizationServerOptions OAuthOptions = new OAuthAuthorizationServerOptions() 
    { 
     AllowInsecureHttp = true, 
     TokenEndpointPath = new PathString("/api/token"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(2),     
     Provider = new AuthorizationServerProvider() 
    }; 

    // To Generate token 
    app.UseOAuthAuthorizationServer(OAuthOptions); 
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

にこのコードを追加します。

yourwebsite/api/token 

grant_type、のユーザー名とパスワード郵便配達員の郵便番号 x-www-form-Urlencodedのタブ。

access_tokenを取得する応答は、Resourceコントローラを呼び出している間に、このアクセストークンをヘッダに入れてください。

さらに参照する場合は、http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/を参照してください。

+0

私はトークンベース認証だと思いますが、Cookieとトークンベース認証を使用するフォーム認証が両方存在する必要があります。その場合のフォーム認証はどうですか? –

+0

ok、あなたは、クッキーまたはトークン認証を使用してAPIコントローラを呼び出すと言うことを意味します。 –

+0

両方の認証を使用する予定の場合、MVC CookieはAuthorize属性を持つAPIコントローラを装飾するだけでAPIコントローラと連携します。 これをStartup.csに追加 - app.UseCookieAuthentication(新しいCookieAuthenticationOptions()); –