OAuth2 KeyCloak Authorization code grant type

0

Witam,

czy jestem w stanie z poziomu kodu wykonać proces, w którym wysyłam request, aby otrzymać authorization code, który później wymieniam na Access Token.
Jeśli tak to prosiłbym o nakierowania, jak to mogę wykonać, a najlepiej jakiś przykład.

Aktualnie jestem w stanie bez problemu wykonać to z poziomu Postmana, przeglądarki etc.
Niestety nie jestem w stanie wysłać żądania w którym przesyłam dane użytkownika, aby dostać authorization code.

Przykładowy URL, który wykorzystuje, aby dostać authorization code:
http://localhost:9090/realms/appdeveloper/protocol/openid-connect/auth?client_id=app-client&response_type=code&scope=openid profile&redirect_uri=http://localhost:9093/callback&state=asfwerwsdfwe

Wpisuje poprawne dane logowania i dostaję authorization code w postaci linku, na który jestem przekierowany.
Mam po prostu problem, aby zrobić to samo w javie.

Za pomoc z góry dzięki.

0

Czytałeś forum?

Jak by link nie działał daj znać, przerób sobie na jave.

0

@pitagram:

Masz przykład użycia winsocket

#include <iostream>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

int main() {
    // Initialize Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "WSAStartup failed.\n";
        return 1;
    }

    // Create a socket
    SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (clientSocket == INVALID_SOCKET) {
        std::cerr << "Error creating socket: " << WSAGetLastError() << "\n";
        WSACleanup();
        return 1;
    }

    // Specify the server address and port
    sockaddr_in serverAddress;
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_addr.s_addr = inet_addr("93.184.216.34");  // IP address of www.example.com
    serverAddress.sin_port = htons(80);

    // Connect to the server
    if (connect(clientSocket, reinterpret_cast<sockaddr*>(&serverAddress), sizeof(serverAddress)) == SOCKET_ERROR) {
        std::cerr << "Error connecting to server: " << WSAGetLastError() << "\n";
        closesocket(clientSocket);
        WSACleanup();
        return 1;
    }

    // Send an HTTP GET request
    const char* request = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";
    if (send(clientSocket, request, strlen(request), 0) == SOCKET_ERROR) {
        std::cerr << "Error sending data: " << WSAGetLastError() << "\n";
        closesocket(clientSocket);
        WSACleanup();
        return 1;
    }

    // Receive and print the response
    char buffer[4096];
    int bytesRead;
    while ((bytesRead = recv(clientSocket, buffer, sizeof(buffer), 0)) > 0) {
        std::cout.write(buffer, bytesRead);
    }

    // Cleanup
    closesocket(clientSocket);
    WSACleanup();

    return 0;
}

0

Dzisiaj nadal grzebałem w temacie i niestety udało mi się ustalić, że nie da się tego zrobić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1