2016-05-04 6 views
0

oauthAuthorizationServerProviderで自分のoauth認証サーバーを作成しようとしています。クライアントはAuthserverにトークンを要求します。クライアントの資格情報が有効な認証サーバーで、アクセストークンを与えている場合クライアントはすべての要求とと​​もにトークンをリソースサーバーに送信します。私はリソースサーバーが認証サーバーによって生成されたトークンをどのように検証するのか理解できません。誰でもoauthAuthorizationServerProviderを使用してサンプルコードを与えることができます。以下はリソースサーバーのOauthベアラトークンを検証します。

私がしようとした実装です:

public class AuthorizationServerProvider : OAuthAuthorizationServerProvider 
{ 
    public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) 
    { 
     return Task.FromResult<object>(context.Validated()); 
    } 

    public override Task TokenEndpoint(OAuthTokenEndpointContext context) 
    { 
     foreach (KeyValuePair<string, string> property in context.Properties.Dictionary) 
     { 
      context.AdditionalResponseParameters.Add(property.Key, property.Value); 
     } 
     return Task.FromResult<object>(null); 
    } 

    public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context) 
    { 
     string path = @"e:\temp\MyTest.txt"; 
     File.WriteAllText(path, context.AccessToken); 
     return base.TokenEndpointResponse(context); 
    } 
} 


public void Configuration(IAppBuilder app) 
    { 
     ConfigureOAuth(app); 
    } 

    public void ConfigureOAuth(IAppBuilder app) 
    { 
     OAuthBearerOptions = new OAuthBearerAuthenticationOptions(); 

     OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() { 
      AllowInsecureHttp=true, 
      TokenEndpointPath= new PathString("/Token"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(20), 
      Provider = new AuthorizationServerProvider(), 

     }; 
     app.UseOAuthAuthorizationServer(OAuthServerOptions); 
     app.UseOAuthBearerAuthentication(OAuthBearerOptions); 
    } 

は、今私はpostmanを使用してテストすることはできませんよ。私の実装がclient_credentialsの認証に合っていると誰かが助けてくれますか?

P.S:TokenEndpointResponseメソッドと、startupのクラスもデバッグしたいです。どうやってやるの?

+0

私の完全なコードはhttps://github.com/koushiksaha89/oauthserverです。 – user3132179

答えて

0

トークンには、認証サーバーによって生成された認証チケットが含まれています。リソースサーバーは、トークンからチケットを抽出し、それが有効であることをチェックします。

このタスクは、Microsoft.Owin.Security.OAuth dllによって実行されます。

認証サーバーとリソースサーバーの両方が、トークン内の認証チケットを暗号化し、トークンを復号化してチケットを取得するために使用されるのと同じマシンキーを共有する必要があります。あなたは、両方のウェブサイト(サーバ)のweb.configでそれを含めることができます。

<system.web> 
    ... 
    <machineKey validationKey="BDE1234FBD71982481D87D815FA0A65B9F5982D123FA96E5672B78ABCD52D58818B479B19FF6D95263E85B0209297E68ABBA7D1E0BD3EABCD5E35742DEA5F2A7" 
     decryptionKey="8E8496D7342EA25ABCDEF6177E04EA00008E359C95E60CD0789456123B9ED2B3" 
     validation="SHA1" decryption="AES" /> 
    ... 
</system.web> 

TokenEndpointResponseOAuthAuthorizationServerProviderで最後に実行する方法であり、他の方法ですべての検証が正しい場合にのみ、あなたはまでデバッグすることはできませんプロバイダは適切に動作します。

私のoauthサーバーの実装は、postによってTaiseer Joudehに基づいています。私はあなたがその説明を読み、コードを見ることができると思います。

私はこれがあなたを助けてくれることを願っています。

関連する問題