• OpenAM 168 0 1 发布
    安装OS

    OpenAM是一个纯JAVA的WEB应用程序产品,可以运行在Windows,Linux,MacOS等各种操作系统上面。

    示范安装我们选择Windows。

    安装JDK

    OpenAM需要运行在JDK6之上。

    示范安装我们选择jdk7。

    安装Tomcat

    OpenAM可以运行在任意JavaEE服务器上

    示范安装我们选择Tomcat8。 OpenAM运行需要1GB的Heap领域和256MB的permanent领域。如下修改bin/catalina.bat文件。

    set CATALINA_OPTS=“-server -Xmx1024m -Xms512m -Xss512k -XX:MaxPermSize=256m”

    OpenAM应用的安装

    OpenAM是以WEB应用(WAR文件)的形式发布的,下载该WAR文件发布到服务器上即可。

    示范安装我们选择OpenAM-12.0.0.war. 2015年6月15日时间点,最新版本的13.0里存在程序BUG,导致Openid Connect不能正常动作。

    设置浏览器页面语言

    OpenAM根据浏览器设定的网页语言优先顺序自动切换语言。所以我们必须更改浏览器的设定才能得到我们所希望的语言显示。 下面是Chrome浏览器的网页显示语言设置。

    初期设定

    选择配置选项

    从客户端浏览器访问http://xxxxx/openam,将出现以下画面,选择【创建新设定】


    步骤1:一般 (设定管理员用户密码)



    步骤2:服务器设定 (设置服务器URL,Cookie域名等。)



    步骤3:设定数据存储 (选择OpenAM。)


    步骤4:设定用户数据存储 (选择OpenAM。)


    步骤5:设定站点  (选择No)


    步骤6:设定缺省的Policy用户 输入缺省的Policy用户用户密码

    完成  点击设定创建按钮。

    系统开始创建设定,并显示进度画面

    这个过程将持续较长时间,完成以后将显示以下画面。


    点击登陆按钮,即进入登录画面



    与Apache集成

    因为Cookie域名的关系,OpenAM与mod_proxy_http不能很好的协同工作 可以使用mod_proxy_ajp,openam 12.0 的ajp端口缺省是8009。

    下面是Apache里映射设定的一个范例

    <VirtualHost *:80> ServerAdmin postmaster@dummy-host2.localhost ServerName xxxx.com ServerAlias xxxx.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / ajp://localhost:8009/ <Location /> Order allow,deny Allow from all </Location> ErrorLog "logs/xxxx-error.log" CustomLog "logs/xxxx-access.log" combined  </VirtualHost>
  • OpenAM 268 0 1 发布

    本文说明的是如何将OpenAM作为OAuth2认证服务器,包括如何配置OAuth2服务和如何创建OAuth2客户端。

    配置OAuth2服务

    以管理员身份登录OpenAM

    (创建服务器设置)

    点击【Config OAuth2/OpenID Connect】按钮

    适当延长Token的有效期限,点击【Create】按钮

    设置创建成功


    (动作确认)

    OpenAM的OAuth服务器の各Endpoint可通过访问以下的URL获得。

    {OpenAM的URL}/.well-known/openid-configuration

    { response_types_supported: [ token id_token ,code token ,code token id_token ,token ,code id_token ,code ,id_token ] ,registration_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/register (string) ,token_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/access_token (string) ,end_session_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/endSession (string) ,version: 3.0 (string) ,userinfo_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/userinfo (string) ,subject_types_supported: [ public ] ,issuer: http://passport.utilhub.dt.hudaokeji.com/openam (string) ,jwks_uri: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/jwk_uri (string) ,id_token_signing_alg_values_supported: [ HS256 ,HS512 ,RS256 ,HS384 ] ,check_session_iframe: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/checkSession (string) ,claims_supported: [ phone ,email ,address ,openid ,profile ] ,authorization_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/authorize (string)  } 创建OAuth2客户端

    以管理员身份登陆openAM

    (新建OAuth2客户端)

    进入【Access Control】→ 【(Top Level Realm)】 → 【Agent】 → 【OAuth 2.0/OpenID Connect Client】,点击【Agent–>New】

    输入Name和Password(这里的Name和Password分别等同于Client ID 和 Client Secret),点击【Create】

    创建成功

    点击创建好的OAuth2/OpenID Connect客户端,进入OAuth2客户端详细设置画面。

    (配置OAuth2客户端)

    输入回调URL


    指定Scope

    指定显示名和描述,这些信息将作为提示信息在用户登录的时候被显示

    指定Default Scope

    (其他)

    第三方用户需要为自己的应用服务登录OAUth2客户端时,可使用以下URL。

    {OpenAM的URL}/oauth2/registerClient.jsp

  • OpenAM 259 0 1 发布

    本文说明的是如何以PolicyAgent方式搭建基于OpenAM的单点登录系统。

    基本机制

    Policy Agent方法通过在运行应用程序的服务器上安装Policy Agent,监视HTTP通信来实现。

    (体系结构)


    (处理流程)

    The web client requests access to a protected resource.The web server runs the request through the policy agent that protects the resource according to OpenAM policy. The policy agent acts to enforce policy, whereas the policy configuration and decisions are handled by OpenAM.The policy agent communicates with OpenAM to get the policy decision to enforce.For a resource to which OpenAM approves access, the policy agent allows access.The web server returns the requested access to the web client创建和设置Agent

    以管理员身份登录OpenAM

    (选择Realm)

    点击Access Control

    选择已有或创建新的Realm,这里选择缺省存在的Top Level Realm

    (创建Agent)

    选择Agent页

    在Web页里点击New按钮,创建新的WebAgent

    属于Agent信息,包括名字,密码,OpenAM服务器的URL,应用程序的URL

    点击Save按钮,保存Agent

    (设置SSO Only Mode)

    (配置Cookie)

    (配置跨域认证)



    安装Web服务器端代理

    (安装Apache)

    选择XAMPP安装版 XAMPP for Windows 5.6.11 (Apache版本:2.4)

    127.0.0.1 apache-pa-test.local.com


    (安装OpenAM-Agent)

    下载OpenAM-Agent

    (Agent设定)






    动作确认







  • OpenAM 179 0 1 发布

    本主题所说明的是如何在NodeJS服务器程序中通过连接到OpenAM服务器实现OAuth2/OpenID Connect认证。

    环境Node.js 0.10.22~Express 4.0~passport 0.2.1~express-generator创建OAuth2客户端

    在OpenAM服务器上为NodeJS服务器应用创建一个客户。

    clientID(name) : localhostclientSecret(password):testcallbackURL:http://localhost:3000/oauth2callback

    创建方法请参照OpenAM单点登录系统搭建(OAuth2认证篇)

    实现准备

    创建一个express应用程序框架

    express openam-connect cd openam-connect

    在package.json加入以下库

    "passport": "*", "passport-openidconnect": "*", "express-session": "*"

    安装所需要的库

    npm install修改app.jsvar express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); var passport = require('passport'); var session = require('express-session'); var OpenidConnectStrategy = require('passport-openidconnect').Strategy; app.use(passport.initialize()); app.use(passport.session()); passport.use(new OpenidConnectStrategy({ authorizationURL: "http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/authorize", tokenURL: "http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/access_token", userInfoURL: "http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/userinfo", clientID: "localhost", clientSecret: "test", callbackURL: "http://localhost:3000/oauth2callback", scope: ["openid"] }, function(accessToken, refreshToken, profile, done) { console.log('accessToken: ', accessToken); console.log('refreshToken: ', refreshToken); console.log('profile: ', profile); return done(null, profile); })); app.get('/auth/passport-utilhub-dt', passport.authenticate('openidconnect')); app.get('/oauth2callback', passport.authenticate('openidconnect', { failureRedirect: '/login' }), function(req, res) { // Successful authentication, redirect home. res.redirect('/'); }); passport.serializeUser(function(user, done){ done(null, user); }); passport.deserializeUser(function(obj, done){ done(null, obj); }); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(__dirname + '/public/favicon.ico')); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; 修改./views/index.jadeextends layout block content h1= title p Welcome to #{title} a(href="/auth/passport-utilhub-dt") Sign In with OpenAM动作确认启动NodeJS应用Windows下
    node ./bin/wwwLinux下
    ./bin/www浏览器访问

    http://localhost:3000

热门总结

  • OpenAM 268 0 1 发布

    本文说明的是如何将OpenAM作为OAuth2认证服务器,包括如何配置OAuth2服务和如何创建OAuth2客户端。

    配置OAuth2服务

    以管理员身份登录OpenAM

    (创建服务器设置)

    点击【Config OAuth2/OpenID Connect】按钮

    适当延长Token的有效期限,点击【Create】按钮

    设置创建成功


    (动作确认)

    OpenAM的OAuth服务器の各Endpoint可通过访问以下的URL获得。

    {OpenAM的URL}/.well-known/openid-configuration

    { response_types_supported: [ token id_token ,code token ,code token id_token ,token ,code id_token ,code ,id_token ] ,registration_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/register (string) ,token_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/access_token (string) ,end_session_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/endSession (string) ,version: 3.0 (string) ,userinfo_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/userinfo (string) ,subject_types_supported: [ public ] ,issuer: http://passport.utilhub.dt.hudaokeji.com/openam (string) ,jwks_uri: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/jwk_uri (string) ,id_token_signing_alg_values_supported: [ HS256 ,HS512 ,RS256 ,HS384 ] ,check_session_iframe: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/connect/checkSession (string) ,claims_supported: [ phone ,email ,address ,openid ,profile ] ,authorization_endpoint: http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/authorize (string)  } 创建OAuth2客户端

    以管理员身份登陆openAM

    (新建OAuth2客户端)

    进入【Access Control】→ 【(Top Level Realm)】 → 【Agent】 → 【OAuth 2.0/OpenID Connect Client】,点击【Agent–>New】

    输入Name和Password(这里的Name和Password分别等同于Client ID 和 Client Secret),点击【Create】

    创建成功

    点击创建好的OAuth2/OpenID Connect客户端,进入OAuth2客户端详细设置画面。

    (配置OAuth2客户端)

    输入回调URL


    指定Scope

    指定显示名和描述,这些信息将作为提示信息在用户登录的时候被显示

    指定Default Scope

    (其他)

    第三方用户需要为自己的应用服务登录OAUth2客户端时,可使用以下URL。

    {OpenAM的URL}/oauth2/registerClient.jsp

  • OpenAM 259 0 1 发布

    本文说明的是如何以PolicyAgent方式搭建基于OpenAM的单点登录系统。

    基本机制

    Policy Agent方法通过在运行应用程序的服务器上安装Policy Agent,监视HTTP通信来实现。

    (体系结构)


    (处理流程)

    The web client requests access to a protected resource.The web server runs the request through the policy agent that protects the resource according to OpenAM policy. The policy agent acts to enforce policy, whereas the policy configuration and decisions are handled by OpenAM.The policy agent communicates with OpenAM to get the policy decision to enforce.For a resource to which OpenAM approves access, the policy agent allows access.The web server returns the requested access to the web client创建和设置Agent

    以管理员身份登录OpenAM

    (选择Realm)

    点击Access Control

    选择已有或创建新的Realm,这里选择缺省存在的Top Level Realm

    (创建Agent)

    选择Agent页

    在Web页里点击New按钮,创建新的WebAgent

    属于Agent信息,包括名字,密码,OpenAM服务器的URL,应用程序的URL

    点击Save按钮,保存Agent

    (设置SSO Only Mode)

    (配置Cookie)

    (配置跨域认证)



    安装Web服务器端代理

    (安装Apache)

    选择XAMPP安装版 XAMPP for Windows 5.6.11 (Apache版本:2.4)

    127.0.0.1 apache-pa-test.local.com


    (安装OpenAM-Agent)

    下载OpenAM-Agent

    (Agent设定)






    动作确认







  • OpenAM 179 0 1 发布

    本主题所说明的是如何在NodeJS服务器程序中通过连接到OpenAM服务器实现OAuth2/OpenID Connect认证。

    环境Node.js 0.10.22~Express 4.0~passport 0.2.1~express-generator创建OAuth2客户端

    在OpenAM服务器上为NodeJS服务器应用创建一个客户。

    clientID(name) : localhostclientSecret(password):testcallbackURL:http://localhost:3000/oauth2callback

    创建方法请参照OpenAM单点登录系统搭建(OAuth2认证篇)

    实现准备

    创建一个express应用程序框架

    express openam-connect cd openam-connect

    在package.json加入以下库

    "passport": "*", "passport-openidconnect": "*", "express-session": "*"

    安装所需要的库

    npm install修改app.jsvar express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); var passport = require('passport'); var session = require('express-session'); var OpenidConnectStrategy = require('passport-openidconnect').Strategy; app.use(passport.initialize()); app.use(passport.session()); passport.use(new OpenidConnectStrategy({ authorizationURL: "http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/authorize", tokenURL: "http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/access_token", userInfoURL: "http://passport.utilhub.dt.hudaokeji.com/openam/oauth2/userinfo", clientID: "localhost", clientSecret: "test", callbackURL: "http://localhost:3000/oauth2callback", scope: ["openid"] }, function(accessToken, refreshToken, profile, done) { console.log('accessToken: ', accessToken); console.log('refreshToken: ', refreshToken); console.log('profile: ', profile); return done(null, profile); })); app.get('/auth/passport-utilhub-dt', passport.authenticate('openidconnect')); app.get('/oauth2callback', passport.authenticate('openidconnect', { failureRedirect: '/login' }), function(req, res) { // Successful authentication, redirect home. res.redirect('/'); }); passport.serializeUser(function(user, done){ done(null, user); }); passport.deserializeUser(function(obj, done){ done(null, obj); }); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(__dirname + '/public/favicon.ico')); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; 修改./views/index.jadeextends layout block content h1= title p Welcome to #{title} a(href="/auth/passport-utilhub-dt") Sign In with OpenAM动作确认启动NodeJS应用Windows下
    node ./bin/wwwLinux下
    ./bin/www浏览器访问

    http://localhost:3000

  • OpenAM 168 0 1 发布
    安装OS

    OpenAM是一个纯JAVA的WEB应用程序产品,可以运行在Windows,Linux,MacOS等各种操作系统上面。

    示范安装我们选择Windows。

    安装JDK

    OpenAM需要运行在JDK6之上。

    示范安装我们选择jdk7。

    安装Tomcat

    OpenAM可以运行在任意JavaEE服务器上

    示范安装我们选择Tomcat8。 OpenAM运行需要1GB的Heap领域和256MB的permanent领域。如下修改bin/catalina.bat文件。

    set CATALINA_OPTS=“-server -Xmx1024m -Xms512m -Xss512k -XX:MaxPermSize=256m”

    OpenAM应用的安装

    OpenAM是以WEB应用(WAR文件)的形式发布的,下载该WAR文件发布到服务器上即可。

    示范安装我们选择OpenAM-12.0.0.war. 2015年6月15日时间点,最新版本的13.0里存在程序BUG,导致Openid Connect不能正常动作。

    设置浏览器页面语言

    OpenAM根据浏览器设定的网页语言优先顺序自动切换语言。所以我们必须更改浏览器的设定才能得到我们所希望的语言显示。 下面是Chrome浏览器的网页显示语言设置。

    初期设定

    选择配置选项

    从客户端浏览器访问http://xxxxx/openam,将出现以下画面,选择【创建新设定】


    步骤1:一般 (设定管理员用户密码)



    步骤2:服务器设定 (设置服务器URL,Cookie域名等。)



    步骤3:设定数据存储 (选择OpenAM。)


    步骤4:设定用户数据存储 (选择OpenAM。)


    步骤5:设定站点  (选择No)


    步骤6:设定缺省的Policy用户 输入缺省的Policy用户用户密码

    完成  点击设定创建按钮。

    系统开始创建设定,并显示进度画面

    这个过程将持续较长时间,完成以后将显示以下画面。


    点击登陆按钮,即进入登录画面



    与Apache集成

    因为Cookie域名的关系,OpenAM与mod_proxy_http不能很好的协同工作 可以使用mod_proxy_ajp,openam 12.0 的ajp端口缺省是8009。

    下面是Apache里映射设定的一个范例

    <VirtualHost *:80> ServerAdmin postmaster@dummy-host2.localhost ServerName xxxx.com ServerAlias xxxx.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / ajp://localhost:8009/ <Location /> Order allow,deny Allow from all </Location> ErrorLog "logs/xxxx-error.log" CustomLog "logs/xxxx-access.log" combined  </VirtualHost>