diff --git a/http/http_connection.h b/http/http_connection.h
index 78805a6..70def8a 100644
--- a/http/http_connection.h
+++ b/http/http_connection.h
@@ -267,6 +267,15 @@
 #ifdef BMCWEB_ENABLE_MUTUAL_TLS_AUTHENTICATION
         adaptor.set_verify_callback(
             [this](bool preverified, boost::asio::ssl::verify_context& ctx) {
+                // do nothing if TLS is disabled
+                if (!crow::persistent_data::SessionStore::getInstance()
+                         .getAuthMethodsConfig()
+                         .tls)
+                {
+                    BMCWEB_LOG_DEBUG << "TLS auth_config is disabled";
+                    return true;
+                }
+
                 // We always return true to allow full auth flow
                 if (!preverified)
                 {
diff --git a/include/sessions.hpp b/include/sessions.hpp
index 7493494..f58c676 100644
--- a/include/sessions.hpp
+++ b/include/sessions.hpp
@@ -345,6 +345,7 @@
     bool cookie = true;
     bool sessionToken = true;
     bool basic = true;
+    bool tls = true;
 
     void fromJson(const nlohmann::json& j)
     {
@@ -372,6 +373,10 @@
             {
                 basic = *value;
             }
+            else if (element.key() == "TLS")
+            {
+                tls = *value;
+            }
         }
     }
 };
@@ -584,7 +589,8 @@
         j = nlohmann::json{{"XToken", c.xtoken},
                            {"Cookie", c.cookie},
                            {"SessionToken", c.sessionToken},
-                           {"BasicAuth", c.basic}};
+                           {"BasicAuth", c.basic},
+                           {"TLS", c.tls}};
     }
 };
 } // namespace nlohmann
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 8f28ea4..637be86 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -895,10 +895,11 @@
         std::optional<bool> cookie;
         std::optional<bool> sessionToken;
         std::optional<bool> xToken;
+        std::optional<bool> tls;
 
         if (!json_util::readJson(input, asyncResp->res, "BasicAuth", basicAuth,
                                  "Cookie", cookie, "SessionToken", sessionToken,
-                                 "XToken", xToken))
+                                 "XToken", xToken, "TLS", tls))
         {
             BMCWEB_LOG_ERROR << "Cannot read values from AuthMethod tag";
             return;
@@ -929,8 +930,14 @@
             authMethodsConfig.xtoken = *xToken;
         }
 
+        if (tls)
+        {
+            authMethodsConfig.tls = *tls;
+        }
+
         if (!authMethodsConfig.basic && !authMethodsConfig.cookie &&
-            !authMethodsConfig.sessionToken && !authMethodsConfig.xtoken)
+            !authMethodsConfig.sessionToken && !authMethodsConfig.xtoken &&
+            !authMethodsConfig.tls)
         {
             // Do not allow user to disable everything
             messages::actionNotSupported(asyncResp->res,
@@ -1151,6 +1158,7 @@
                      {"SessionToken", authMethodsConfig.sessionToken},
                      {"XToken", authMethodsConfig.xtoken},
                      {"Cookie", authMethodsConfig.cookie},
+                     {"TLS", authMethodsConfig.tls},
                  }}}}}},
             {"LDAP",
              {{"Certificates",
diff --git a/static/redfish/v1/JsonSchemas/OemAccountService/index.json b/static/redfish/v1/JsonSchemas/OemAccountService/index.json
index 5283170..2311d83 100644
--- a/static/redfish/v1/JsonSchemas/OemAccountService/index.json
+++ b/static/redfish/v1/JsonSchemas/OemAccountService/index.json
@@ -83,6 +83,15 @@
                         "null"
                     ]
                 },
+                "TLS": {
+                    "description": "Indicates whether TLS authorization is enabled.",
+                    "longDescription": "The value of this property shall be a boolean indicating whether TLS authorization is enabled.",
+                    "readonly": false,
+                    "type": [
+                        "boolean",
+                        "null"
+                    ]
+                },
                 "XToken": {
                     "description": "Indicates whether XToken authorization is enabled.",
                     "longDescription": "The value of this property shall be a boolean indicating whether XToken authorization is enabled.",
diff --git a/static/redfish/v1/schema/OemAccountService_v1.xml b/static/redfish/v1/schema/OemAccountService_v1.xml
index 626097b..c5783ca 100644
--- a/static/redfish/v1/schema/OemAccountService_v1.xml
+++ b/static/redfish/v1/schema/OemAccountService_v1.xml
@@ -53,6 +53,12 @@
           <Annotation Term="OData.Description" String="Indicates whether XToken authorization is enabled."/>
           <Annotation Term="OData.LongDescription" String="The value of this property shall be a boolean indicating whether XToken authorization is enabled."/>
         </Property>
+
+        <Property Name="TLS" Type="Edm.Boolean">
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+          <Annotation Term="OData.Description" String="Indicates whether TLS authorization is enabled."/>
+          <Annotation Term="OData.LongDescription" String="The value of this property shall be a boolean indicating whether TLS authorization is enabled."/>
+        </Property>
       </ComplexType>
 
       <!--Base entity type for array members-->
