Skip to content

Commit 4e1d603

Browse files
committed
fix oidc issue url
1 parent 39c1118 commit 4e1d603

8 files changed

Lines changed: 59 additions & 18 deletions

File tree

OpenFlow/src/Config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ export class Config {
154154
public static oauth_token_cache_seconds: number = parseInt(Config.getEnv("oauth_token_cache_seconds", "60000"));
155155
public static oauth_access_token_lifetime: number = parseInt(Config.getEnv("oauth_access_token_lifetime", "604800"));
156156
public static oauth_refresh_token_lifetime: number = parseInt(Config.getEnv("oauth_refresh_token_lifetime", "604800"));
157+
public static oidc_cookie_key: string = Config.getEnv("oidc_cookie_key", "Y6SPiXCxDhAJbN7cbydMw5eX1wIrdy8PiWApqEcguss=");
157158
public static api_rate_limit: boolean = Config.parseBoolean(Config.getEnv("api_rate_limit", "true"));
158159
public static api_rate_limit_points: number = parseInt(Config.getEnv("api_rate_limit_points", "60"));
159160
public static api_rate_limit_duration: number = parseInt(Config.getEnv("api_rate_limit_duration", "1"));

OpenFlow/src/DatabaseConnection.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,15 @@ export class DatabaseConnection {
158158
});
159159
this._logger.info(`Really connected to mongodb`);
160160
// this.cli = await MongoClient.connect(this.mongodburl, { autoReconnect: false, useNewUrlParser: true });
161-
this.cli.on("error", (error) => {
161+
const errEvent = (error) => {
162162
this.isConnected = false;
163163
this._logger.error(error);
164-
});
164+
}
165+
this.cli
166+
.on('error', errEvent)
167+
.on('parseError', errEvent)
168+
.on('timeout', errEvent)
169+
.on('close', errEvent);
165170
this.db = this.cli.db(this._dbname);
166171
this.isConnected = true;
167172
}

OpenFlow/src/Messages/Message.ts

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { amqpwrapper } from "../amqpwrapper";
1919
import { WebSocketServerClient } from "../WebSocketServerClient";
2020
import { DBHelper } from "../DBHelper";
2121
import { WebSocketServer } from "../WebSocketServer";
22+
import { OAuthProvider } from "../OAuthProvider";
2223
const request = require("request");
2324
const got = require("got");
2425
const { RateLimiterMemory } = require('rate-limiter-flexible')
@@ -765,7 +766,7 @@ export class Message {
765766
msg = SigninMessage.assign(this.data);
766767
let tuser: TokenUser = null;
767768
let user: User = null;
768-
if (msg.jwt !== null && msg.jwt !== undefined) {
769+
if (!NoderedUtil.IsNullEmpty(msg.jwt)) {
769770
type = "jwtsignin";
770771
tuser = Crypt.verityToken(msg.jwt);
771772
if (tuser.impostor !== null && tuser.impostor !== undefined && tuser.impostor !== "") {
@@ -791,12 +792,30 @@ export class Message {
791792
if (impostor !== "") {
792793
tuser.impostor = impostor;
793794
}
794-
} else if (msg.rawAssertion !== null && msg.rawAssertion !== undefined) {
795-
type = "samltoken";
796-
user = await LoginProvider.validateToken(msg.rawAssertion);
797-
// refresh, for roles and stuff
798-
if (user !== null && user != undefined) { tuser = TokenUser.From(user); }
799-
msg.rawAssertion = "";
795+
} else if (!NoderedUtil.IsNullEmpty(msg.rawAssertion)) {
796+
let AccessToken = null;
797+
let User = null;
798+
try {
799+
AccessToken = await OAuthProvider.instance.oidc.AccessToken.find(msg.rawAssertion);
800+
if(!NoderedUtil.IsNullUndefinded(AccessToken)) {
801+
User = await OAuthProvider.instance.oidc.Account.findAccount(null, AccessToken.accountId);
802+
console.log('User:', User);
803+
}
804+
console.log('AccessToken:', AccessToken);
805+
} catch (error) {
806+
console.error(error);
807+
}
808+
if(!NoderedUtil.IsNullUndefinded(AccessToken)) {
809+
user = User.user;
810+
console.log('User:', user);
811+
if (user !== null && user != undefined) { tuser = TokenUser.From(user); }
812+
} else {
813+
type = "samltoken";
814+
user = await LoginProvider.validateToken(msg.rawAssertion);
815+
// refresh, for roles and stuff
816+
if (user !== null && user != undefined) { tuser = TokenUser.From(user); }
817+
msg.rawAssertion = "";
818+
}
800819
} else {
801820
user = await Auth.ValidateByPassword(msg.username, msg.password);
802821
tuser = null;

OpenFlow/src/OAuthProvider.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,12 @@ export class OAuthProvider {
112112
// cli.grant_types = cli.grants;
113113
// if (cli.grant_types == null) cli.grant_types = ['authorization_code'];
114114
if (cli.grant_types == null) cli.grant_types = ['implicit', 'authorization_code'];
115-
console.log(cli.post_logout_redirect_uri)
115+
console.log(cli.clientId + " " + cli.token_endpoint_auth_method);
116116

117117

118118
// cli.redirect_uris.push("https://localhost.openiap.io/")
119119
});
120-
const provider = new Provider("https://localhost.openiap.io/oidc", {
120+
const provider = new Provider(Config.baseurl() + "oidc", {
121121
clients: instance.clients,
122122
adapter: MongoAdapter,
123123
formats: {
@@ -156,10 +156,19 @@ export class OAuthProvider {
156156
// findAccount: this.FindAccount,
157157
// findAccount: this.findAccount,
158158
findAccount: Account.findAccount,
159+
// cookies: {
160+
// long: { signed: false, maxAge: 0, path: '/' },
161+
// keys: ["Y6SPiXCxDhAJbN7cbydMw5eX1wIrdy8PiWApqEcguss="], // node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
162+
// short: {
163+
// signed: false,
164+
// path: '/',
165+
// },
166+
// },
159167
cookies: {
160168
short: {
161169
path: '/',
162170
},
171+
keys: [Config.oidc_cookie_key], // node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
163172
},
164173
});
165174
provider.proxy = true;
@@ -201,7 +210,7 @@ export class OAuthProvider {
201210
res.send('[]');
202211
return;
203212
}
204-
if (req.originalUrl.startsWith("/oidc/auth?access_type=online")) {
213+
if (req.originalUrl.startsWith("/oidc/auth")) {
205214
const _session = req.cookies["_session"];
206215
const session = req.cookies["session"];
207216
var session1 = await this.instance.oidc.Session.find(_session)
@@ -226,12 +235,19 @@ export class OAuthProvider {
226235
instance.app.use('/oidccb', async (req, res, next) => {
227236
try {
228237

238+
var test = await this.instance.oidc.interactionDetails(req, res);
229239
const {
230240
uid, prompt, params, session,
231241
} = await this.instance.oidc.interactionDetails(req, res);
232242
var r = req;
233243
var u = req.user;
234-
if (req.isAuthenticated()) {
244+
const isAuthenticated:boolean = req.isAuthenticated();
245+
console.log("isAuthenticated: " + isAuthenticated)
246+
if (isAuthenticated) {
247+
// if(!NoderedUtil.IsNullEmpty(test.returnTo) ) {
248+
// res.redirect(test.returnTo);
249+
// return;
250+
// }
235251
} else {
236252
res.cookie("originalUrl", "/oidccb", { maxAge: 900000, httpOnly: true });
237253
res.redirect('/login');

OpenFlow/src/public/WebSocketClientService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { WebSocketClient, TokenUser, NoderedUtil } from "@openiap/openflow-api";
33
interface IHashTable<T> {
44
[key: string]: T;
55
}
6+
declare type onSignedinCallback = (user: TokenUser) => void;
67
export class WebSocketClientService {
78
static $inject = ["$rootScope", "$location", "$window"];
89
constructor(
@@ -168,8 +169,7 @@ export class WebSocketClientService {
168169
};
169170
xhr.send();
170171
}
171-
172-
onSignedin(callback) {
172+
public onSignedin(callback:onSignedinCallback) {
173173
if (this.user !== null) {
174174
callback(this.user);
175175
return;

OpenFlowNodeRED/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openiap/nodered",
3-
"version": "1.1.183",
3+
"version": "1.1.184",
44
"description": "Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scaleable NodeRed implementation.\r Also the \"backend\" for [OpenRPA](https://github.com/skadefro/OpenRPA)",
55
"main": "index.js",
66
"scripts": {

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.183
1+
1.1.184

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openiap/openflow",
3-
"version": "1.1.183",
3+
"version": "1.1.184",
44
"description": "Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scaleable NodeRed implementation.\r Also the \"backend\" for [OpenRPA](https://github.com/skadefro/OpenRPA)",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)