2017-12-26 46 views
3

私は.NETでoauthとowinの初心者です。私はこれらのメソッドValidateClientAuthenticationメソッドとGrantResourceOwnerCredentialsメソッドを理解しようとしていました。 GrantResourceOwnerCredentialsメソッドを使用して資格情報を検証し、トークンを生成できることを理解しました。次に、ValidateClientAuthentication()メソッドの目的は何か。親切に私にこのことを教えてください。どうもありがとう。OWINのoAuthでValidateClientAuthenticationメソッドとGrantResourceOwnerCredentialsメソッドの違いは何ですか?

public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
     { 
      return Task.Factory.StartNew(() => 
      { 
       var userName = context.UserName; 
       var password = context.Password; 
       var userService = new UserService(); // our created one 
       var user = userService.ValidateUser(userName, password); 
       if (user != null) 
       { 
        var claims = new List<Claim>() 
        { 
         new Claim(ClaimTypes.Sid, Convert.ToString(user.Id)), 
         new Claim(ClaimTypes.Name, user.Name), 
         new Claim(ClaimTypes.Email, user.Email) 
        }; 
        ClaimsIdentity oAuthIdentity = new ClaimsIdentity(claims,Startup.OAuthOptions.AuthenticationType); 


        var properties = CreateProperties(user.Name); 
        var ticket = new AuthenticationTicket(oAuthIdentity, properties); 
        context.Validated(ticket); 
       } 
       else 
       { 
        context.SetError("invalid_grant", "The user name or password is incorrect"); 
       } 
      }); 
     } 
     #endregion 

     #region[ValidateClientAuthentication] 
     public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) 
     { 
      if (context.ClientId == null) 
       context.Validated(); 

      return Task.FromResult<object>(null); 
     } 
     #endregion 

答えて

1

これはOAuth 2.0の仕様

Client Credentials FlowResource Owner Password Credentials Flowに関連して、クライアントとリソースの所有者は、OAuthの下に個別の実体であることを覚えておいてください。クライアントは、リソース所有者のの代わりにを要求します。

実際には、実際のユーザー名とパスワードを受け取り、アクセストークンを発行すると予想される場合は、GrantResourceOwnerCredentialsを使用することをお勧めします。

ValidateClientAuthenticationを使用して、クライアントがそのとおりであることを確認する必要があります。クライアントを許可サーバーに登録し、依然として有効であることを確認する必要がある場合は、これを実行します。

私が見たほとんどのコードサンプルは、サンプルで行ったようにcontext.Validated()を呼び出しただけです。少し深めのコードサンプルでブログ記事を見つけることができました。こちらをご覧ください:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/

+0

こんにちは、ありがとうございます。グレート:)今私はそれらのメソッドの違いを理解している。また、私は 'validated()'メソッドについて理解しています。参照リンクは非常に便利です。よくやった。がんばり続ける。 –

+0

私の謙虚な提案は.....あなたの良い答えを提供するたびに、コンセプトが簡単な方法でリアルタイムの例やシナリオで説明されていれば大きな価値があります。あなたの助けをたくさんありがとう:)あなたを傷つけている場合は、私の提案に申し訳ありません –

関連する問題