mirror of
https://github.com/jpace121/j7s-jwt-mosquitto-auth.git
synced 2026-11-04 15:32:46 +00:00
Cleanup.
This commit is contained in:
1 parent
f09ff2c9f7
commit
96e419c12c
13 files changed
+109
-139
No files matched your search
+14
-1
@@ -1,5 +1,18 @@
|
||||
#include <algorithm>
|
||||
// Copyright 2021 James Pace
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
#include <jwp-plugin/AuthList.hpp>
|
||||
#include <algorithm>
|
||||
|
||||
AuthList::AuthList():
|
||||
_allowedUsernames{}
|
||||
|
||||
+16
-4
@@ -1,12 +1,24 @@
|
||||
// Copyright 2021 James Pace
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
#include <jwp-plugin/Authorizer.hpp>
|
||||
#include <string>
|
||||
#include <jwt-cpp/jwt.h>
|
||||
#include <jwp-plugin/AuthList.hpp>
|
||||
|
||||
#include <jwt-cpp/jwt.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <optional>
|
||||
|
||||
|
||||
Authorizer::Authorizer(const std::string& pub_key, const std::string& issuer):
|
||||
_pub_key{pub_key},
|
||||
|
||||
+15
-19
@@ -1,29 +1,25 @@
|
||||
extern "C" {
|
||||
#include "mosquitto.h"
|
||||
#include "mosquitto_broker.h"
|
||||
#include "mosquitto_plugin.h"
|
||||
}
|
||||
// Copyright 2021 James Pace
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
#include <jwp-plugin/jwp-plugin.h>
|
||||
#include <jwp-plugin/Authorizer.hpp>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <jwp-plugin/Authorizer.hpp>
|
||||
|
||||
// Stuff we're "exporting" for the dynamic loading.
|
||||
extern "C" {
|
||||
int mosquitto_plugin_version(int supported_version_count, const int *supported_versions);
|
||||
int mosquitto_plugin_init(mosquitto_plugin_id_t *identifier, void **userdata, struct mosquitto_opt *options, int option_count);
|
||||
int mosquitto_plugin_cleanup(void *userdata, struct mosquitto_opt *options, int option_count);
|
||||
}
|
||||
// My functions
|
||||
int jwp_auth_basic_auth_callback(int event, void *event_data, void *userdata);
|
||||
int jwp_acl_check_callback(int event, void *event_data, void *userdata);
|
||||
int jwp_disconnect_callback(int event, void *event_data, void *userdata);
|
||||
|
||||
|
||||
// Mosquitto Globals
|
||||
static mosquitto_plugin_id_t *plugin_id = nullptr;
|
||||
static std::unique_ptr<Authorizer> authorizer = nullptr;
|
||||
|
||||
|
||||
int mosquitto_plugin_version(int supported_version_count, const int *supported_versions)
|
||||
{
|
||||
for(int index = 0; index < supported_version_count; index++)
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
#include <jwt-cpp/jwt.h>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
std::string pub_key = R"(-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VwAyEA+IYMWskcPLcC8IsUy6xsj3whqlzYwFWuAmVR7ue/LLw=
|
||||
-----END PUBLIC KEY-----)";
|
||||
std::string priv_key = R"(-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VwBCIEID6d/A9UnVV5xXf9RAvXSNTk/a1QNUrzfvawzEAWDh3e
|
||||
-----END PRIVATE KEY-----)";
|
||||
|
||||
auto token = jwt::create()
|
||||
.set_type("JWT")
|
||||
.set_issuer("jamesp")
|
||||
.set_subject("jimmy")
|
||||
.set_audience("mqtt")
|
||||
.set_payload_claim("topics", jwt::claim(std::string{"{'/help/*', '/test/*'}"}))
|
||||
.set_expires_at(std::chrono::system_clock::now())
|
||||
.sign(jwt::algorithm::ed25519(pub_key, priv_key, "", ""));
|
||||
|
||||
std::cout << "Token: " << token << std::endl;
|
||||
|
||||
auto verifier = jwt::verify()
|
||||
.allow_algorithm(jwt::algorithm::ed25519(pub_key, "", "", ""))
|
||||
.with_issuer("jamesp");
|
||||
|
||||
auto decoded = jwt::decode(token);
|
||||
|
||||
try
|
||||
{
|
||||
verifier.verify(decoded);
|
||||
}
|
||||
catch(jwt::error::token_verification_exception& exception)
|
||||
{
|
||||
std::cout << exception.what() << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
for(auto& e : decoded.get_header_claims())
|
||||
{
|
||||
std::cout << e.first << ": " << e.second.to_json() << std::endl;
|
||||
}
|
||||
|
||||
std::cout << std::endl;
|
||||
|
||||
for(auto& e : decoded.get_payload_claims())
|
||||
{
|
||||
std::cout << e.first << ": " << e.second.to_json() << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user