2017-01-12 7 views
0

2つのWebサイトがあります(新しいMVCアプリケーションと古いWebFormアプリケーションです)。私はそれらがお互いに通信できるようにする必要があります。お互いに話している2つのWebサイトのセキュリティ

私は両方のサイトでRESTful Web APIを実装し、各サイトで他のサイトのWeb APIを呼び出すことを検討しています。

これまでのところ、認証はどうでしたか?私はAuthentication Filtersを見ています。彼らはMVCアプリの合理的なアプローチのようですが、WebFormsでサポートされていないようです。

私の質問は、これらのAPIのいずれかを呼び出す唯一のエンティティは他のWebサイトなので、このプロセスを簡略化する方法はありますか?たとえば、私は秘密のGUIDを持って渡すことができますか、そして、他のサイトが正しいGUIDを取得すれば、それは大丈夫ですか?

私はHTTPSを使用することに注意してください。また、私たちは銀行でもありません。セキュリティは妥当で、それ以上のものは必要ありません。

+0

2つのサイト間でhttpsでJWT(Json Web Token)を調べます。 2つの間でそれを実装するのに十分単純でなければなりません。 – Nkosi

答えて

2

クライアントの単純なユーザーID /パスワードを設定して、すべての要求と共にAuthorizationヘッダーに渡すことができます。次に、カスタムAuthorizationFilterAttributeを作成して、信任状を認証します。

このようなものです。

public class MyAuthorizeAttribute : AuthorizationFilterAttribute 
{    
        public ICustomerAuthenticator CustomerAuthenticator { get; set; } 
         
        public override void OnAuthorization(HttpActionContext actionContext) 
        {    
            var authInfo = $"{actionContext.Request.Headers.Authorization.Parameter}"; 

            var authenticationResult = CustomerAuthenticator.Authenticate(new []{ authInfo }); 

            if (!authenticationResult.Authenticated) 
            { 
                 
                actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized) 
                {    
                    Content = new StringContent("You are not authorized.") 
                }; 
            } 
            else 
            { 
                actionContext.RequestContext.Principal = new GenericPrincipal(new ClaimsIdentity(new List<Claim> 
                { 
                    new Claim("CustomerId", authenticationResult.Customer.Id.ToString()), 
                    new Claim("CustomerName", authenticationResult.Customer.Name) 
                })); 
            } 
        } 
} 

これが役立ちます。

関連する問題