diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 9e73bd6260..25233aa024 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -33,8 +33,6 @@ const char* METAVOXEL_SERVER_CONFIG = "metavoxelServerConfig"; const quint16 DOMAIN_SERVER_HTTP_PORT = 8080; -const QUrl DEFAULT_NODE_AUTH_URL = QUrl("https://data.highfidelity.io"); - DomainServer::DomainServer(int argc, char* argv[]) : QCoreApplication(argc, argv), _HTTPManager(DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this), diff --git a/libraries/shared/src/AccountManager.cpp b/libraries/shared/src/AccountManager.cpp index 4e83fad0ed..4b439b3dc8 100644 --- a/libraries/shared/src/AccountManager.cpp +++ b/libraries/shared/src/AccountManager.cpp @@ -13,6 +13,7 @@ #include #include +#include "NodeList.h" #include "PacketHeaders.h" #include "AccountManager.h" @@ -22,12 +23,16 @@ AccountManager& AccountManager::getInstance() { return sharedInstance; } +const QString DEFAULT_NODE_AUTH_OAUTH_CLIENT_ID = "12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c"; + AccountManager::AccountManager() : _username(), _accessTokens(), + _clientIDs(), _networkAccessManager(NULL) { + _clientIDs.insert(DEFAULT_NODE_AUTH_URL, DEFAULT_NODE_AUTH_OAUTH_CLIENT_ID); } bool AccountManager::hasValidAccessTokenForRootURL(const QUrl &rootURL) { @@ -43,27 +48,29 @@ bool AccountManager::hasValidAccessTokenForRootURL(const QUrl &rootURL) { } } -const QString OAUTH_CLIENT_ID_FOR_DEFAULT_ROOT_URL = "12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c"; - void AccountManager::requestAccessToken(const QUrl& rootURL, const QString& username, const QString& password) { if (_networkAccessManager) { - QNetworkRequest request; - - QUrl grantURL = rootURL; - grantURL.setPath("/oauth/token"); - - QByteArray postData; - postData.append("client_id=12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c &"); - postData.append("grant_type=password&"); - postData.append("username=" + username + "&"); - postData.append("password=" + password); - - request.setUrl(grantURL); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - - QNetworkReply* requestReply = _networkAccessManager->post(request, postData); - connect(requestReply, &QNetworkReply::finished, this, &AccountManager::requestFinished); - connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError))); + if (_clientIDs.contains(rootURL)) { + QNetworkRequest request; + + QUrl grantURL = rootURL; + grantURL.setPath("/oauth/token"); + + QByteArray postData; + postData.append("client_id=" + _clientIDs.value(rootURL) + "&"); + postData.append("grant_type=password&"); + postData.append("username=" + username + "&"); + postData.append("password=" + password); + + request.setUrl(grantURL); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + + QNetworkReply* requestReply = _networkAccessManager->post(request, postData); + connect(requestReply, &QNetworkReply::finished, this, &AccountManager::requestFinished); + connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError))); + } else { + qDebug() << "Client ID for OAuth authorization at" << rootURL.toString() << "is unknown. Cannot authenticate."; + } } } diff --git a/libraries/shared/src/AccountManager.h b/libraries/shared/src/AccountManager.h index 8039cc7dbe..440ac3bb48 100644 --- a/libraries/shared/src/AccountManager.h +++ b/libraries/shared/src/AccountManager.h @@ -42,6 +42,7 @@ private: QString _username; QMap _accessTokens; + QMap _clientIDs; QNetworkAccessManager* _networkAccessManager; }; diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 7fc2aa38f9..1a1796af93 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -29,6 +29,8 @@ const char SOLO_NODE_TYPES[2] = { NodeType::AudioMixer }; +const QUrl DEFAULT_NODE_AUTH_URL = QUrl("https://data.highfidelity.io"); + NodeList* NodeList::_sharedInstance = NULL; NodeList* NodeList::createInstance(char ownerType, unsigned short int socketListenPort) { diff --git a/libraries/shared/src/NodeList.h b/libraries/shared/src/NodeList.h index 7d947fec59..c43b53d52e 100644 --- a/libraries/shared/src/NodeList.h +++ b/libraries/shared/src/NodeList.h @@ -37,8 +37,7 @@ const quint64 PING_INACTIVE_NODE_INTERVAL_USECS = 1 * 1000 * 1000; extern const char SOLO_NODE_TYPES[2]; -extern const QString DEFAULT_DOMAIN_HOSTNAME; -extern const unsigned short DEFAULT_DOMAIN_SERVER_PORT; +extern const QUrl DEFAULT_NODE_AUTH_URL; const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost";