2016-07-29 5 views
0

OAuthトークンの承認が途絶えています。私はOAuthを設定しており、自分のOAuthサーバプロバイダを持っています。許可属性によるOAuthベアラトークンの検証

構成コード:

OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
    { 
     AllowInsecureHttp = true, 
     TokenEndpointPath = new PathString("/token"), 
     AuthorizeEndpointPath = new PathString("/authorize"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromHours(1), 
     Provider = new SimpleAuthorizationServerProvider() 
    }; 

    app.UseOAuthAuthorizationServer(OAuthServerOptions); 
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

Serverプロバイダ:

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

     public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
     { 

      context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); 

      using (AuthRepository _repo = new AuthRepository()) 
      { 
       IdentityUser user = await _repo.FindUser(context.UserName, context.Password); 

       if (user == null) 
       { 
        context.SetError("invalid_grant", "The user name or password is incorrect."); 
        return; 
       } 
      } 

      var identity = new ClaimsIdentity(context.Options.AuthenticationType); 
      identity.AddClaim(new Claim("sub", context.UserName)); 
      identity.AddClaim(new Claim("role", "user")); 

      context.Validated(identity);    
     } 
    } 

私が送信しています:OAuthのトーク​​ンエンドポイント"localhost/token"grand_type=password, username=MyUserName, password=MyPasswordが、それがうまく私のOAuthベアラートークンを作成しています。しかし、ここからは、この生成されたトークンをどのように使用するか、格納されている場所(入手方法)、およびASP.NET MVCコントローラの[Authorize]属性を使用して成功の検証を行う方法はわかりません。私は、ただ一つのビューから別のビューに行くときに、[Authorize]という属性を持つ、生成されたトークンを使い、それを正常に通過させたいだけです。どのように私はこれを達成することができますか?

+0

あなたは、あなたが生成されたリフレッシュトークンのクッキーを作成することができ、これは、複数のビュー経由でアクセスすることができ、あなたのアクセストークンが1のために有効であることを覚えています1時間ごとに新しいアクセストークンを生成する必要があります – SoftwareNerd

答えて

0

は、次のワークフローを実装します。

関連する問題