| #ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_AUTHZ_OAUTH_UTILS_H_ | |
| #define THIRD_PARTY_MILOTIC_EXTERNAL_CC_AUTHZ_OAUTH_UTILS_H_ | |
| #include <optional> | |
| #include <string> | |
| #include "redfish_v1.pb.h" | |
| #include "config_parser.h" | |
| #include "g3/grpc_headers.h" | |
| namespace milotic::authz { | |
| // Generates the subject of the OAuth token for the given peer. | |
| std::string GenerateOAuthSubject(const PeerSpiffeIdentity& peer); | |
| // Extracts the OAuth token from the Redfish request. | |
| // Returns std::nullopt if the request doesn't contain an OAuth token. | |
| std::optional<std::string> GetOAuthTokenFromRequest( | |
| const ::redfish::v1::Request& request); | |
| // Verifies the OAuth token regarding signature, subject, audience, issuer, | |
| // and expiration, if it's valid, extract the Redfish role from the scope claim. | |
| grpc::Status VerifyAndExtractRoleFromToken(const std::string& token, | |
| const std::string& public_key, | |
| const std::string& expected_subject, | |
| const std::string& expected_audience, | |
| const std::string& expected_issuer, | |
| std::string& redfish_role); | |
| } // namespace milotic::authz | |
| #endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_AUTHZ_OAUTH_UTILS_H_ |