2015-09-01 3 views
1

Мы пытаемся создать аутентификацию пользователя в нашем веб-приложении (которое мы разрабатываем в Java Spring MVC). Для нашей аутентификации мы хотим использовать информацию о токенах и пользователях, полученную из учетной записи пользователя fiware.lab в глобальном экземпляре keyrock.Как проверить подлинность веб-приложения Java с помощью KeyRock?

Поскольку Keyrock основан на протоколе OAuth2, каков наилучший подход к использованию keyrock из нашего веб-приложения?

Есть ли библиотека java, которую мы могли бы использовать для этой цели?

Есть ли способ интегрировать весеннюю безопасность или apache oltu?

Каждый пример будет более, чем welecome.

У нас есть только осуществление node.js, но нам нужна версия Java из this:

var express = require('express'); 
var OAuth2 = require('./oauth2').OAuth2; 
var config = require('./config'); 


// Express configuration 
var app = express(); 
app.use(express.logger()); 
app.use(express.bodyParser()); 
app.use(express.cookieParser()); 
app.use(express.session({ 
    secret: "skjghskdjfhbqigohqdiouk" 
})); 

app.configure(function() { 
    "use strict"; 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
    //app.use(express.logger()); 
    app.use(express.static(__dirname + '/public')); 
}); 


// Config data from config.js file 
var client_id = config.client_id; 
var client_secret = config.client_secret; 
var idmURL = config.idmURL; 
var response_type = config.response_type; 
var callbackURL = config.callbackURL; 

// Creates oauth library object with the config data 
var oa = new OAuth2(client_id, 
        client_secret, 
        idmURL, 
        '/oauth2/authorize', 
        '/oauth2/token', 
        callbackURL); 

// Handles requests to the main page 
app.get('/', function(req, res){ 

    // If auth_token is not stored in a session cookie it sends a button to redirect to IDM authentication portal 
    if(!req.session.access_token) { 
     res.send("Oauth2 IDM Demo.<br><br><button onclick='window.location.href=\"/auth\"'>Log in with FI-WARE Account</button>"); 

    // If auth_token is stored in a session cookie it sends a button to get user info 
    } else { 
     res.send("Successfully authenticated. <br><br> Your oauth access_token: " +req.session.access_token + "<br><br><button onclick='window.location.href=\"/user_info\"'>Get my user info</button>"); 
    } 
}); 

// Handles requests from IDM with the access code 
app.get('/login', function(req, res){ 

    // Using the access code goes again to the IDM to obtain the access_token 
    oa.getOAuthAccessToken(req.query.code, function (e, results){ 

     // Stores the access_token in a session cookie 
     req.session.access_token = results.access_token; 

     res.redirect('/'); 

    }); 
}); 

// Redirection to IDM authentication portal 
app.get('/auth', function(req, res){ 
    var path = oa.getAuthorizeUrl(response_type); 
    res.redirect(path); 
}); 

// Ask IDM for user info 
app.get('/user_info', function(req, res){ 
    var url = config.idmURL + '/user/'; 

    // Using the access token asks the IDM for the user info 
    oa.get(url, req.session.access_token, function (e, response) { 

     var user = JSON.parse(response); 
     res.send("Welcome " + user.displayName + "<br> Your email address is " + user.email + "<br><br><button onclick='window.location.href=\"/logout\"'>Log out</button>"); 
    }); 
}); 

// Handles logout requests to remove access_token from the session cookie 
app.get('/logout', function(req, res){ 

    req.session.access_token = undefined; 
    res.redirect('/'); 
}); 

console.log('Server listen in port 80. Connect to localhost'); 
app.listen(80); 

Edit 1 Вот мой настройки:

enter image description here

enter image description here

и ошибка конечного результата я получаю, когда я называю фишку:

enter image description here

+0

PS, вопрос вы не вполне понятны, так как это сочетание языков. Пожалуйста, обновите сообщение, чтобы любой мог дать вам лучшую обратную связь :) – albertinisg

+0

sry, я переводил вопрос – Vrankela

ответ

2

Fiware devguide объясняет, как это oauth2 поток работает против KeyRock. Также вы можете найти ссылку several oauth2 implementations, например scribe-data, где вы можете найти несколько примеров того, как использовать аутентификацию oauth2 для некоторых из наиболее распространенных социальных сетей.

+0

Спасибо за отзыв, мы просто искали полное решение, подобное тому, которое было для node.js – Vrankela

+0

Ну, это правда что он не работает «из коробки», как в приведенных примерах, документация является довольно простой и простой, https://github.com/fernandezpablo85/scribe-java/wiki/getting-started и, конечно же, является полное решение, вам просто нужно интегрировать его в свое приложение (как и с «node.js»). – albertinisg

+0

спасибо, мы попробуем обновить вас с дополнительной информацией – Vrankela