Upstream version 10.39.233.0
[platform/framework/web/crosswalk.git] / src / remoting / host / token_validator_factory_impl.h
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef REMOTING_HOST_TOKEN_VALIDATOR_FACTORY_IMPL_H_
6 #define REMOTING_HOST_TOKEN_VALIDATOR_FACTORY_IMPL_H_
7
8 #include <set>
9 #include <string>
10
11 #include "base/basictypes.h"
12 #include "net/url_request/url_request_context_getter.h"
13 #include "remoting/host/token_validator_base.h"
14 #include "remoting/protocol/token_validator.h"
15
16 namespace remoting {
17
18 // This class dispenses |TokenValidator| implementations that use a UrlFetcher
19 // to contact a |token_validation_url| and exchange the |token| for a
20 // |shared_secret|.
21 class TokenValidatorFactoryImpl : public protocol::TokenValidatorFactory {
22  public:
23   // Creates a new factory. |token_url| and |token_validation_url| are the
24   // third party authentication service URLs, obtained via policy. |key_pair_|
25   // is used by the host to authenticate with the service by signing the token.
26   TokenValidatorFactoryImpl(
27       const ThirdPartyAuthConfig& third_party_auth_config,
28       scoped_refptr<RsaKeyPair> key_pair,
29       scoped_refptr<net::URLRequestContextGetter> request_context_getter);
30
31   virtual ~TokenValidatorFactoryImpl();
32
33   // TokenValidatorFactory interface.
34   virtual scoped_ptr<protocol::TokenValidator> CreateTokenValidator(
35       const std::string& local_jid,
36       const std::string& remote_jid) OVERRIDE;
37
38  private:
39   ThirdPartyAuthConfig third_party_auth_config_;
40   scoped_refptr<RsaKeyPair> key_pair_;
41   scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
42
43   DISALLOW_COPY_AND_ASSIGN(TokenValidatorFactoryImpl);
44 };
45
46 }  // namespace remoting
47
48 #endif  // REMOTING_HOST_URL_FETCHER_TOKEN_VALIDATOR_FACTORY_H_