123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- #include "yql_token_builder.h"
- namespace NYql {
- TStructuredTokenBuilder::TStructuredTokenBuilder() {
- }
- TStructuredTokenBuilder::TStructuredTokenBuilder(const TStructuredToken& data)
- : Data(data)
- {
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetServiceAccountIdAuth(const TString& accountId, const TString& accountIdSignature) {
- Data.SetField("sa_id", accountId);
- Data.SetField("sa_id_signature", accountIdSignature);
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetServiceAccountIdAuthWithSecret(const TString& accountId, const TString& accountIdSignatureReference, const TString& accountIdSignature) {
- Data.SetField("sa_id", accountId);
- Data.SetField("sa_id_signature_ref", accountIdSignatureReference);
- Data.SetField("sa_id_signature", accountIdSignature);
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetBasicAuth(const TString& login, const TString& password) {
- Data.SetField("basic_login", login);
- Data.SetField("basic_password", password);
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetBasicAuthWithSecret(const TString& login, const TString& passwordReference) {
- Data.SetField("basic_login", login);
- Data.SetField("basic_password_ref", passwordReference);
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetTokenAuthWithSecret(const TString& tokenReference, const TString& token) {
- Data.SetField("token_ref", tokenReference);
- Data.SetField("token", token);
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetIAMToken(const TString& token) {
- Data.SetField("token", token);
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::SetNoAuth() {
- Data.SetField("no_auth", {});
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::ReplaceReferences(const std::map<TString, TString>& secrets) {
- if (Data.HasField("basic_password_ref")) {
- auto reference = Data.GetField("basic_password_ref");
- Data.ClearField("basic_password_ref");
- Data.SetField("basic_password", secrets.at(reference));
- }
- if (Data.HasField("sa_id_signature_ref")) {
- auto reference = Data.GetField("sa_id_signature_ref");
- Data.ClearField("sa_id_signature_ref");
- Data.SetField("sa_id_signature", secrets.at(reference));
- }
- if (Data.HasField("token_ref")) {
- auto reference = Data.GetField("token_ref");
- Data.ClearField("token_ref");
- Data.SetField("token", secrets.at(reference));
- }
- return *this;
- }
- TStructuredTokenBuilder& TStructuredTokenBuilder::RemoveSecrets() {
- Data.ClearField("basic_password");
- Data.ClearField("sa_id_signature");
- Data.ClearField("token");
- return *this;
- }
- TString TStructuredTokenBuilder::ToJson() const {
- return Data.ToJson();
- }
- ///////////////////////////////////////////////////////////////////
- TStructuredTokenParser::TStructuredTokenParser(TStructuredToken&& data)
- : Data(std::move(data))
- {
- }
- bool TStructuredTokenParser::HasServiceAccountIdAuth() const {
- return Data.HasField("sa_id");
- }
- bool TStructuredTokenParser::GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature) const {
- TString accountIdSignatureReference;
- return GetServiceAccountIdAuth(accountId, accountIdSignature, accountIdSignatureReference);
- }
- bool TStructuredTokenParser::GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature, TString& accountIdSignatureReference) const {
- accountId = Data.GetField("sa_id");
- accountIdSignature = Data.GetFieldOrDefault("sa_id_signature", "");
- accountIdSignatureReference = Data.GetFieldOrDefault("sa_id_signature_ref", "");
- return true;
- }
- bool TStructuredTokenParser::HasBasicAuth() const {
- return Data.HasField("basic_login");
- }
- bool TStructuredTokenParser::GetBasicAuth(TString& login, TString& password) const {
- TString passwordReference;
- return GetBasicAuth(login, password, passwordReference);
- }
- bool TStructuredTokenParser::GetBasicAuth(TString& login, TString& password, TString& passwordReference) const {
- login = Data.GetField("basic_login");
- password = Data.GetFieldOrDefault("basic_password", "");
- passwordReference = Data.GetFieldOrDefault("basic_password_ref", "");
- return true;
- }
- bool TStructuredTokenParser::HasIAMToken() const {
- return Data.HasField("token");
- }
- TString TStructuredTokenParser::GetIAMToken() const {
- return Data.GetField("token");
- }
- bool TStructuredTokenParser::IsNoAuth() const {
- return Data.HasField("no_auth");
- }
- void TStructuredTokenParser::ListReferences(TSet<TString>& references) const {
- if (Data.HasField("basic_password_ref")) {
- references.insert(Data.GetField("basic_password_ref"));
- }
- if (Data.HasField("sa_id_signature_ref")) {
- references.insert(Data.GetField("sa_id_signature_ref"));
- }
- if (Data.HasField("token_ref")) {
- references.insert(Data.GetField("token_ref"));
- }
- }
- TStructuredTokenBuilder TStructuredTokenParser::ToBuilder() const {
- return TStructuredTokenBuilder(Data);
- }
- TStructuredTokenParser CreateStructuredTokenParser(const TString& content = {}) {
- return content ? TStructuredTokenParser(ParseStructuredToken(content)) : TStructuredTokenParser(TStructuredToken({}));
- }
- TString ComposeStructuredTokenJsonForServiceAccount(const TString& serviceAccountId, const TString& serviceAccountIdSignature, const TString& token) {
- TStructuredTokenBuilder result;
-
- if (serviceAccountId && serviceAccountIdSignature) {
- result.SetServiceAccountIdAuth(serviceAccountId, serviceAccountIdSignature);
- return result.ToJson();
- }
- if (token) {
- result.SetIAMToken(token);
- return result.ToJson();
- }
- result.SetNoAuth();
- return result.ToJson();
- }
- TString ComposeStructuredTokenJsonForServiceAccountWithSecret(const TString& serviceAccountId, const TString& serviceAccountIdSignatureSecretName, const TString& serviceAccountIdSignature) {
- TStructuredTokenBuilder result;
-
- if (serviceAccountId && serviceAccountIdSignatureSecretName && serviceAccountIdSignature) {
- result.SetServiceAccountIdAuthWithSecret(serviceAccountId, serviceAccountIdSignatureSecretName, serviceAccountIdSignature);
- return result.ToJson();
- }
- result.SetNoAuth();
- return result.ToJson();
- }
- TString ComposeStructuredTokenJsonForBasicAuthWithSecret(const TString& login, const TString& passwordSecretName, const TString& password) {
- TStructuredTokenBuilder result;
-
- if (login && passwordSecretName && password) {
- result.SetBasicAuth(login, password).SetBasicAuthWithSecret(login, passwordSecretName);
- return result.ToJson();
- }
- result.SetNoAuth();
- return result.ToJson();
- }
- TString ComposeStructuredTokenJsonForTokenAuthWithSecret(const TString& tokenSecretName, const TString& token) {
- TStructuredTokenBuilder result;
- if (tokenSecretName && token) {
- result.SetTokenAuthWithSecret(tokenSecretName, token);
- return result.ToJson();
- }
- result.SetNoAuth();
- return result.ToJson();
- }
- }
|