`

JOSSO 1.8.0 配置

阅读更多

이 글은, 실험적인 내용을 그대로 기록한 것이라서, 다소 장황함. 설치에 대한 요약본은 아래 링크 참조할 것!

 

 

 

 

JOSSO를 설치해서 실험해보자.

 

 

 

다운로드

 

 

 

 

 

 

임시 폴더에 압축을 풀어놓는다. c:\tools\josso-1,8.0 (설치 작업이 끝난 후에는 삭제할 예정임. 뭐, 공간 남으면 그대로 둬도 무해하다.)

 

 

 

 

 

JOSSO Gateway 설치

 

 

 

Gateway는 뭔가 ‘통로’가 되는 도구로서, 인증 서버의 모듈을 의미한다. 대비되는 개념으로는 Agent가 있다.

 

 

 

윈도 커맨드 창(cmd)을 열어, cd c:\tools\josso-1.8.0\bin 으로 가서, josso-gsh 실행

 

 

 

 

잠깐, 설치하려는 target인 tomcat의 버전을 확인. xampp 1.7.2 패키지의 add-on인 tomcat 버전은, 6.0.20이다.

 

따라서, 위의 josso-gsh 쉘에서 실행해야 할 설치 명령은 아래와 같다.

 

 

 

gateway install --target "$TOMCAT_HOME" --platform tc60
exit

 

 

 

순진하게 그대로 하면, 다음과 같은 에러를 보게 된다.

 

 

 

 

당연히, $TOMCAT_HOME과 같은 환경변수는 설정되어 있지도 않고, 더구나 현재 설치하려는 시스템은 ‘윈도’이므로 위와 같은 게 먹히지도 않는다. 그냥, 직접 지정해주자.

 

 

 

 

애석하게도, “c:\tools\xampp\tomcat” 과 같이 지정해주면, 위와 같은 에러가 난다. ‘경로’를 표시해주는 방식을 ‘유닉스 스타일’로 바꿔주자.

 

 

 

 

뭔가 꽤 많은 파일들이, 곳곳에 설치된다. 훗날을 위해, 잘 기억해두는 게 좋겠다.

 

Install JOSSO Gateway Configuration
  Generating    ['Remember Me' AES key]                                     [OK
  ] Created file:///Z:/Temp/josso-auth.properties
  Installing    [josso-auth.properties]                                     [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-auth.properties
  Using         ['memory' default configuration]                            [OK
  ] Installing josso-gateway-memory-stores.xml as josso-gateway-stores.xml
  Installing    [josso-credentials.xml]                                     [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-credentials.xml
  Installing    [josso-gateway-auth.xml]                                    [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-auth.xml
  Installing    [josso-gateway-config.xml]                                  [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-config.xml
  Installing    [josso-gateway-db-stores.xml]                               [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-db-stores.xml
  Installing    [josso-gateway-jmx.xml]                                     [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-jmx.xml
  Installing    [josso-gateway-ldap-stores.xml]                             [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-ldap-stores.xml
  Installing    [josso-gateway-memory-stores.xml]                           [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-stores.xml
  Installing    [josso-gateway-memory-stores.xml]                           [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-memory-stores.xml
  Installing    [josso-gateway-selfservices.xml]                            [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-selfservices.xml
  Installing    [josso-gateway-web.xml]                                     [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-gateway-web.xml
  Installing    [josso-users.xml]                                           [OK
  ] Created file:///c:/tools/xampp/tomcat/lib/josso-users.xml

Deploy JOSSO Gateway Application
  Installing    []                                                          [OK
  ] Created file:///c:/tools/xampp/tomcat/webapps/josso
  Unjar         [josso-gateway-web-1.8.0.war]                               [OK
  ] file:///c:/tools/xampp/tomcat/webapps

 

 

 

다소 쫌 특이하게도, josso-*-xml 설정파일들이 tomcat/lib 폴더에 깔린다.

 

그리고, 이건 내 컴퓨터만의 특이사항인데, 램디스크를 TEMP 폴더로 사용하고 있어서 인지,

 

josso-auth.properties 파일이 Z:/TEMP 폴더에 생겼다. 이거 나중에 모르고 지워질 수도 있는데, 어째, 쬐금, 불안하다. 아, 다시 자세히 보니, 똑같은 파일을  c:/tools/xampp/tomcat/lib/josso-auth.properties 로도 이미 가지고 있다. 걱정안해도 되겠다.

 

 

 

설정파일 이외에 주요 프로그램들은 모두 webapps/josso 라는 폴더에 모아져 있다.

 

 

 

자, tomcat을 재시동하고, 아래 URL을 방문해보자.

 

 

 

http://localhost/josso/signon/usernamePasswordLogin.do

 

http://localhost:8080/josso/signon/login.do

 

 

 

 

 

 

기본으로 설정되어 있는 사용자 아이디와 패스워드는 아래와 같다. 참고로, 이 값들은, josso-credentials.xml 에 들어있고, 상세정보는 josso-users.xml 에 들어있다.

 

 

 

user1 user1pwd
user2 user2pwd
tomcat tomcatpwd

 

 

 

위 페이지에 입력하고 ‘Login’ 버튼을 누르면, 짜잔~

 

 

 

 

 

 

혹시나 해서, 현재 로그인되어 있는 페이지에서 브라우저 쿠키값을 아래와 같이 확인해봤다. JOSSO Session 값과는 다르다.

 

 

 

 

 

 

PHP JOSSO Agent 설치

 

 

 

설치방법은 다소 좀 복잡하다. 우선, 소스에 있는 압축파일을 열어본다. C:\Tools\josso-1.8.0\dist\agents\src\josso-php-agent-1.8.0-.zip . 폴더가 두 개 있다. 각각 다르게 설치해준다.

 

 

 

josso-php-inc agent 프로그램 기본 클래스, 설정파일 php.ini include_path가 설정된 폴더에 압축해제하거나, 아예 include_path에 넣어준다.
josso-php-partnerapp agent 프로그램 기본 모듈, 실제 사용 xampp/htdocs/josso-php-partnerapp 폴더로 압축해제

 

 

 

실제 배치된 파일들의 위치는 아래와 같다.

 

include_path = ".;C:\Tools\xampp\php\PEAR;C:\Tools\phpLibs"
C:\Tools\phpLibs\josso-php-inc

 

 

 

C:\Tools\xampp\htdocs\josso-php-partnerapp
josso-login.php
josso-logout.php
josso-security-check.php

 

 

 

약간의 편집작업이 필요하다. 위의 josso-php-partnerapp 폴더의 파일들을 모두 열어서 아래 행을 프로그램 첫 부분에 넣어준다.

 

include_once("josso-php-inc/josso.php");

 

 

 

자, 이제, 아래 URL을 열어본다. 심각한 에러 발생!

 

http://localhost/josso-php-partnerapp/josso-login.php

 

 

 

Fatal error: Cannot redeclare class soapclient

 

 

 

josso-php-inc에 포함된 nusoap이 문제다. soapclient 라는 클래스가 PHP 5.x 버전 내장 함수와 충돌한다. 해결책은?

 

 

 

 

다소, 욱하지만, nusoap 파일들을 모두 열어서, 이름을 바꾸기로 하자.

 

 

 

JOSSO 실험: 동일 도메인 localhost

 

 

 

다시, 페이지를 열어본다.

 

http://localhost/josso-php-partnerapp/josso-login.php

 

 

 

 

 

 

위의 주소창을 잘 살펴보면, 뭔가 길게 자동으로 바뀌었음을 알 수 있다. 일단, tomcat으로 이동했고, 로그인 입력 화면으로 바뀌었다.

 

 

 

 

사용자 아이디와 패스워드를 입력: user1 user1pwd user2 user2pwd 아무거나 하나. 다시, 원래의 사이트로 되돌아 왔다. 발급받은 SSO Session 아이디는 아래와 같다.

 

 

 

 

 

 

위 페이지에서 쿠키값을 조사해보면 아래와 같다.

 

 

 

 

 

 

JSESSIONID=108F74E8CEE37C7F7723B5ACC25BB516; PHPSESSID=e1p5ar37it63ouidebvvc557o2; JOSSO_SESSIONID=2A9C149F0644E76B97AB5DBC20ECD69B

 

 

 

현재, IDP(Identity Provider, 인증서버)와 SP(Service Provider, 서비스 서버, partnerapp 서버)가 모두 localhost라는 도메인을 가지고 있기 때문에, JSESSIONID, PHPSESSID, JOSSO_SESSIONID 모두 다 보인다.

 

 

 

쿠키 정보 추적을 위해, 좀더 편리한 firefox를 사용해보자.

 

http://localhost/josso-php-partnerapp/josso-login.php

 

 

 

 

 

 

 

 

 

로그인 완료후에 되돌아온 페이지, 새로 추가된 쿠키

 

 

 

 

아참, 여기서 궁금증. 어떻게 josso gateway는 php partnerapp에게 요청을 되돌려 줄 때, 원래 시작된 페이지 URL이 아닌 http://localhost/josso-php-partnerapp/josso-security-check.php 로 되돌려 준다는 걸 알고 있는 걸까? 그리고, josso_assertion_id=0B7ED2FE61F361EB 이건 뭘까?

 

 

 

우선, 소스 코드를 좀 보자.

 

josso-security-check.php

include_once("josso-php-inc/josso.php");

// Resolve the assertion :

$assertionId = $_REQUEST['josso_assertion_id'];
$backToUrl = $_SESSION['JOSSO_ORIGINAL_URL'];

$ssoSessionId = $josso_agent->resolveAuthenticationAssertion($assertionId);

// Set SSO Cookie ...
setcookie("JOSSO_SESSIONID", $ssoSessionId, 0, "/"); // session cookie ...
$_COOKIE['JOSSO_SESSIONID'] = $ssoSessionId;

if (isset($backToUrl)) {
    forceRedirect($backToUrl, true);
}

// No page is stored, just display this one ...
// Get current sso user information,
$user = $josso_agent->getUserInSession();

 

 

 

'josso_assertion_id'는 josso gateway에 인증이 확실한지를 다시 확인해보는 기능인 듯. 2번째 호출하면 금방 값의 유효성이 증발한다.

 

 

 

그리고, $_SESSION['JOSSO_ORIGINAL_URL']에 값이 설정되어 있으면, 원래의 페이지로 넘어갈 수 있다는 의미인 듯... 이건 어디서 설정해주는 걸까? 알았다.

 

 

 

JOSSO PHP 코드를 들여다 보니, 뭔가를 좀 알겠다.

 

 

 

josso.php

 

 

 

이를테면, josso-security-check.php 가 gateway로부터의 통로가 되는 셈이다. 이 모듈을 통해서 ssoSessionId를 받아서, 서비스 서버에 쿠키로 심어주는 역할이다. 이 때, ssoSessionId 를 그냥 url 변수로 받으면 외부에 그대로 노출되어 위험하기 때문에, 'josso_assertion_id’ 를 통해서 받아서 그걸 입력으로 해서 gateway 서버와 soap 통신을 해서 ssoSessionId 받는다. 일종의 Injection을 수행해주는 모듈이다. 아마도 이 기능 때문에, cross domain sso가 가능한 것인 듯 싶다.

 

 

 

예제로 주어진 파일들이 josso_current_url 이란 변수를 입력으로 받아서 처리해주기 때문에...

 

 

 

간단하게 값을 덤프해주는 페이지를 하나 만들자. [아랫 부분에 sample로 제공되는 예제가 더 쉽다. 굳이 이 부분은 만들지 않아도 된다.]

 

 

 

dump.php

<?php

include_once("WLib/Utils.php");

Utils::dump($_REQUEST, '$_REQUEST');
Utils::dump($_GET, '$_GET');
Utils::dump($_POST, '$_POST');
Utils::dump($_SESSION, '$_SESSION');
Utils::dump($_COOKIE, '$_COOKIE');

 

WLib/Utils.php

class Utils
{

    /**
     * mimic Zend_Debug::dump()
     * @param mixed variable anything like mixed, array, object
     * @param string variable name and the other comments
     * @return void
     */
    public static function dump($var, $title='')
    {
        ob_start();
        echo "\n";
        if (!empty($title)) {
            $backTraces = debug_backtrace();
            $file = basename($backTraces[0]['file']);
            $line = $backTraces[0]['line'];
            if (isset($backTraces[1]['function'])) {
                $func = $backTraces[1]['function'];
            } else {
                $func = "";
            }
            echo "{$title} : {$func}() of {$file} : {$line} line\n";
        }
        var_dump($var);
        $out = ob_get_contents();
        ob_end_clean();
        if (php_sapi_name() == 'cli' || extension_loaded('xdebug')) {
            // Console or xdebug
            echo $out;
        } else {
            // Web
            $out = str_ireplace('</textarea>', '< / textarea >', $out);
            $rows = 1 + substr_count($out, "\n");
            echo "<textarea rows='" . $rows . "' style='width: 100%'>\n";
            echo $out;
            echo "</textarea>\n";
        }
    }

}

 

 

 

http://localhost/josso-php-partnerapp/josso-login.php?josso_current_url=http://localhost/josso-php-partnerapp/dump.php

 

http://localhost/josso-php-partnerapp/josso-login.php?josso_current_url=http://localhost/josso-php-partnerapp/dump.php

 

http://localhost/josso-php-partnerapp/josso-logout.php?josso_current_url=http://localhost/josso-php-partnerapp/dump.php

 

http://localhost/josso-php-partnerapp/josso-logout.php?josso_current_url=http://localhost/josso-php-partnerapp/dump.php

 

 

 

로그인을 하게 되면, 아래 페이지로 되돌아온다. 그런데, 특이한 게 있다.

 

 

 

 

 

 

$_GET과 $_POST에는 값이 없음에도 불구하고, $_REQUEST에는 값이 버젓이 들어있다. 이거 언제 누가 넣은걸까? 쿠키가 설정되면, 자동으로 설정되는 것인 듯...

 

 

 

josso-security-check.php 중간에 잠깐 흐름을 끊어서 출력해봄.

 

 

 

 

JOSSO 실험: 다른 도메인 cross domain

 

 

 

만약, 인증서버와 서비스서버의 도메인이 서로 다르면 어떻게 될까? 실제 도메인을 등록해서 실험해도 좋겠지만, 간단하게 로컬에서만 실험할 것이므로, hosts 파일을 열어서 설정한다.

 

  • windows > system32 > drivers > etc > hosts 
  • C:\WINDOWS\system32\drivers\etc\hosts

 

 

 

 

 

 

그리고, 실험을 좀더 간단하게 하기 위해,,, sample.php 페이지를 만든다. 소스 코드 압축파일 풀어놓은 곳에서 찾아보면,,,

 

C:\Tools\josso-1.8.0\dist\samples\apps\josso-partner-php-1.8.0-.zip 이라고 있다. 이 파일들을 htdocs/josso-php/ 폴더에 풀어놓자. [josso 라고 짧게 이름을 주면 좋겠지만, apache와 tomcat을 연동시켜 놓은 상태라면, tomcat에 이미 그 이름의 폴더가 있다. tomcat이 이긴다. php 파일이 없다고 나온다.]

 

 

 

index.php

sample-ask-login.php

 

 

 

두 파일 모두 편집기에서 열어서, 첫줄에 아래와 같이 추가해준다. josso agent 모듈의 경로를 지정해주는 일이다.

 

 

 

 

http://aaa.com/josso-php/ 제공된 링크를 눌러서 로그인하면 로그아웃을 위한 링크가 나온다. 누르면, 다시 로그인 링크 나오고...

 

 

 

 

 

 

 

 

도메인을 바꿔서 접속해보면, aaa.com 에서 이미 로그인 된 상태였더라도, bbb.com에서는 새로 로그인하라는 화면이 뜬다.

 

 

 

 

 

 

이것은, 정확히 ‘쿠키’가 없기 때문이다. aaa.com 에서는 이미 로그인했었으므로 ‘쿠키’가 있지만, bbb.com에서는 아직 ‘쿠키’가 없다. 로그인 링크를 눌러보자. 엇, 로그인 입력 화면이 안 뜨고 바로 로그인이 된 것으로 나온다. 인증서버엘 갔더니 이미 ‘쿠키’가 있어서, 바로 로그인 상태로 만들어진 것이다. 이 과정을 좀더 눈에 안뜨이게 할 수 있으면, cross domain sso의 최종적 완성이라고 할텐데... 이 예제에서는 반드시 로그인 링크를 눌러야만 한다.

 

 

 

조금 다른 예제를 살펴보자. (브라우저 쿠키를 모두 지우던가, 브라우저를 껐다가 새로 켠다.)

 

http://aaa.com/josso-php/index.php 이 페이지를 연 다음, 로그인 입력을 하고 로그인한다. 그 다음 아래 URL을 주소창에 그대로 쳐본다.

 

http://bbb.com/josso-php/sample-ask-login.php

 

 

 

 

 

 

바로 로그인이 되어 있는 상태로 나왔다. 어떻게 이게 가능한 것일까? 비밀은 소스에 있었다.

 

 

 

 

 

 

눈깜짝할 새에 벌써 저쪽 인증서버에 한 번 갔다온 것이다.

 

 

 

http://bbb.com/josso-php/index.php 다시, 이 페이지를 연 다음, 로그아웃을 한다. 그 다음 아래 URL을 주소창에 그대로 쳐본다.

 

http://bbb.com/josso-php/sample-ask-login.php 아래와 같이 로그인 요청 화면이 뜨면, 맞다.

 

 

 

 

 

 

 

 

http://aaa.com/josso-php/index.php 이 주소로 로그인하고, 탭을 열어서 아래 주소를 입력했다가, 다시 로그아웃하고, 아래 주소를 확인해보자.

 

http://bbb.com/josso-php/sample-ask-login.php  마찬가지로, 로그인되어 있을 때는 화면이 보였다가, 로그아웃 후에는 로그인 요청 화면이 보인다.

 

 

 

 

 

실험 결론

 

 

 

이로써, 크로스 도메인 SSO의 기본 기능이 모두 잘 작동한다.

 

 

 

 

 

참고문서

 

 

 

  • http://www.jopenbusiness.com/mediawiki/index.php/JOSSO 한글문서, 설치와 설정에 관한 몹시 자세한 설명.
  • http://www.josso.org/ JOSSO 공식 사이트. 혹시 약자가 궁금하신 분을 위해. Java Open  Single Sign-On = JOSSO.
    2009년 8월 현재, 최신 버전은 1.8. 크로스 도메인 기능을 지원함. PHP, ASP, 클라이언트(에이전트) 모듈 제공 

-------------------------------------------

FROM: https://blog.naver.com/joycestudy/100086695314

 

分享到:
评论

相关推荐

    ibus-table-chinese-erbi-1.4.6-3.el7.x64-86.rpm.tar.gz

    1、文件内容:ibus-table-chinese-erbi-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-erbi-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    基于微信小程序的新乡学院自习室预约系统.zip

    选择Java后台技术和MySQL数据库,在前台界面为提升用户体验,使用Jquery、Ajax、CSS等技术进行布局。 系统包括两类用户:学生、管理员。 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、自习室信息、在线留言、轮播图信息公告等,通过点击首页的菜单跳转到对应的功能页面菜单,包括网站首页、自习室信息、注册登录、个人中心、后台登录。 学生用户通过账户账号登录,登录后具有所有的操作权限,如果没有登录,不能在线预约。学生用户退出系统将注销个人的登录信息。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括轮播公告管理、老师学生信息管理和信息审核管理,管理员管理后点击退出,注销登录信息。 管理员用户具有在线交流的管理,自习室信息管理、自习室预约管理。 在线交流是对前台用户留言内容进行管理,删除留言信息,查看留言信息。

    面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 面向基层就业个性化大学生服务平台中的管理员角色主要负责了如下功能操作。 (1)职业分类管理功能需求:对职业进行划分分类管理等。 (2)用户管理功能需求:对用户信息进行维护管理等。 (3)职业信息管理功能需求:对职业信息进行发布等。 (4)问卷信息管理功能需求:可以发布学生的问卷调查操作。 (5)个性化测试管理功能需求:可以发布个性化测试试题。 (6)试题管理功能需求:对测试试题进行增删改查操作。 (7)社区交流管理功能需求:对用户的交流论坛信息进行维护管理。 面向基层就业个性化大学生服务平台中的用户角色主要负责了如下功能操作。 (1)注册登录功能需求:没有账号的用户,可以输入账号,密码,昵称,邮箱等信息进行注册操作,注册后可以输入账号和密码进行登录。 (2)职业信息功能需求:用户可以对职业信息进行查看。 (3)问卷信息功能需求:可以在线进行问卷调查答卷操作。 (4)社区交流功能需求:可以在线进行社区交流。 (5)个性化测试功能需求:可以在线进行个性化测试。 (6)公告资讯功能需求:可以查看浏览系统发布的公告资讯信息。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    三菱Fx3u程序:自动检测包装机电机控制模板,PLC脉冲与伺服定位,手自动切换功能,三菱Fx3u程序:自动检测包装机电机控制模板-涵盖伺服定位与手自动切换功能,三菱Fx3u程序,自动检测包装机 该

    三菱Fx3u程序:自动检测包装机电机控制模板,PLC脉冲与伺服定位,手自动切换功能,三菱Fx3u程序:自动检测包装机电机控制模板——涵盖伺服定位与手自动切换功能,三菱Fx3u程序,自动检测包装机。 该程序六个电机,plc本体脉冲控制3个轴,3个1pg控制。 程序内包括伺服定位,手自动切,功能快的使用,可作为模板程序,很适合新手。 ,三菱Fx3u程序; 自动检测包装机; 六个电机; PLC脉冲控制; 伺服定位; 手自动切换; 功能快捷键; 模板程序。,三菱Fx3u PLC控制下的自动包装机程序:六电机伺服定位与手自动切换模板程序

    基于多尺度集成极限学习机回归 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    计及信息间隙决策与多能转换的综合能源系统优化调度模型:实现碳经济最大化与源荷不确定性考量,基于信息间隙决策与多能转换的综合能源系统优化调度模型:源荷不确定性下的高效碳经济调度策略,计及信息间隙决策及多

    计及信息间隙决策与多能转换的综合能源系统优化调度模型:实现碳经济最大化与源荷不确定性考量,基于信息间隙决策与多能转换的综合能源系统优化调度模型:源荷不确定性下的高效碳经济调度策略,计及信息间隙决策及多能转的综合能源系统优化调度 本代码构建了含风电、光伏、光热发电系统、燃气轮机、燃气锅炉、电锅炉、储气、储电、储碳、碳捕集装置的综合能源系统优化调度模型,并考虑P2G装置与碳捕集装置联合运行,从而实现碳经济的最大化,最重要的是本文引入了信息间隙决策理论考虑了源荷的不确定性(本代码的重点)与店铺的47代码形成鲜明的对比,注意擦亮眼睛,认准原创,该代码非常适合修改创新,,提供相关的模型资料 ,计及信息间隙决策; 综合能源系统; 优化调度; 多能转换; 碳经济最大化; 风电; 光伏; 燃气轮机; 储气; 储电; 储碳; 碳捕集装置; P2G装置联合运行; 模型资料,综合能源系统优化调度模型:基于信息间隙决策和多能转换的原创方案

    IPG QCW激光模块电源驱动电路设计与实现:包含安全回路、紧急放电回路及光纤互锁功能的多版本原理图解析,IPG QCW激光模块电源驱动电路设计与实现:含安全回路、紧急放电及光纤互锁等多重保护功能的原

    IPG QCW激光模块电源驱动电路设计与实现:包含安全回路、紧急放电回路及光纤互锁功能的多版本原理图解析,IPG QCW激光模块电源驱动电路设计与实现:含安全回路、紧急放电及光纤互锁等多重保护功能的原理图解析,IPG QCW激光模块电源驱动电路, 包含安全回路,紧急放电回路,光纤互锁回路等, 元件参数请根据实际设计适当调整,此电路仅供参考,不提供pcb文件 原理图提供PDF和KICAD两个版本。 ,IPG激光模块; QCW激光电源驱动; 安全回路; 紧急放电回路; 光纤互锁回路; 原理图PDF和KICAD版本。,IPG激光模块电源驱动电路图解:含安全与紧急放电回路

    基于LSSVM的短期电力负荷预测模型及其性能评估:结果揭露精确度与误差分析,LSSVM在短期电力负荷预测中的结果分析:基于均方根误差、平均绝对误差及平均相对百分误差的评估 ,LSSVM最小二乘支持向量

    基于LSSVM的短期电力负荷预测模型及其性能评估:结果揭露精确度与误差分析,LSSVM在短期电力负荷预测中的结果分析:基于均方根误差、平均绝对误差及平均相对百分误差的评估。,LSSVM最小二乘支持向量机做短期电力负荷预测。 结果分析 均方根误差(RMSE):0.79172 平均绝对误差(MAE):0.4871 平均相对百分误差(MAPE):13.079% ,LSSVM(最小二乘支持向量机);短期电力负荷预测;均方根误差(RMSE);平均绝对误差(MAE);平均相对百分误差(MAPE),LSSVM在电力负荷短期预测中的应用及性能分析

    libmtp-examples-1.1.14-1.el7.x64-86.rpm.tar.gz

    1、文件内容:libmtp-examples-1.1.14-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libmtp-examples-1.1.14-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    《基于 Transformer 的光学字符识别模型》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    2023-04-06-项目笔记 - 第四百一十六阶段 - 4.4.2.414全局变量的作用域-414 -2025.02.21

    2023-04-06-项目笔记-第四百一十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.414局变量的作用域_414- 2025-02-21

    MINIST数据集和春风机器学习框架

    MINIST数据集和春风机器学习框架

    ibus-table-chinese-wu-1.4.6-3.el7.x64-86.rpm.tar.gz

    1、文件内容:ibus-table-chinese-wu-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-wu-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    宿舍管理系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    宿舍管理系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 系统拥有管理员和学生两个角色,主要具备系统首页、个人中心、学生管理、宿舍信息管理、宿舍分配管理、水电费管理、进入宿舍管理、出入宿舍管理、维修信息管理、卫生信息管理、考勤信息管理、留言板、交流论坛、系统管理等功能模块。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    基于智能算法的无人机路径规划研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    人凤飞飞凤飞飞是粉色丰富

    人凤飞飞凤飞飞是粉色丰富

    2024蓝桥杯嵌入式学习资料

    2024蓝桥杯嵌入式学习资料

    image_download_1740129191509.jpg

    image_download_1740129191509.jpg

    基于Multisim仿真的带优先病房呼叫系统设计(仿真图)

    基于Multisim仿真的带优先病房呼叫系统设计(仿真图) 设计一个病房呼叫系统。 功能 (1)当有病人紧急呼叫时,产生声,光提示,并显示病人的编号; (2)根据病人的病情设计优先级别,当有多人呼叫时,病情严重者优先; (3)医护人员处理完当前最高级别的呼叫后,系统按优先级别显示其他呼叫病人的病号。

    基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能切换与全方位保护方案,基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能控制与全方位保护方案,逆变器光伏逆变器,3

    基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能切换与全方位保护方案,基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能控制与全方位保护方案,逆变器光伏逆变器,3.6kw储能逆变器全套资料 STM32储能逆变器 BOOST 全桥 基于STM32F103设计,具有并网充电、放电;并网离网自动切;485通讯,在线升级;风扇智能控制,提供过流、过压、短路、过温等全方位保护。 基于arm的方案区别于dsp。 有PCB、原理图及代码ad文件。 ,逆变器; 储能逆变器; STM32F103; 3.6kw; 485通讯; 全方位保护; 智能控制; 方案区别; PCB文件; 原理图文件; ad文件。,基于STM32F103的3.6kw储能逆变器:全方位保护与智能控制

Global site tag (gtag.js) - Google Analytics