Tuesday, January 13, 2015

55% of big businesses block Dropbox: employees evade if no convenient replacement is proposed

According to a GIGAOM study, 55% of businesses with 30k+ employees explicitly forbid SaaS-based file sharing (Dropbox, Box, Office365, Syncplicity, etc).

Do employees accept this rule and go back to using their company's awkward tools, or stop sharing files with their colleagues?
No: According to the same study, 90% of cloud application usage happens without the IT department knowing it.

Block Dropbox, and employees will use a lesser-known alternative. Which is probably even worse.

Conclusion: If you block Dropbox, at the same time you should provide an alternative that offers the same convenience.

CmisSync offers exactly that:
- Looks like Dropbox
- Feels like Dropbox- Syncs like Dropbox
- Connects only to your corporate server, and never to any third-party.
90% of actual cloud application usage happens without the company IT department knowing - See more at: http://blogs.intralinks.com/collaborista/2014/10/out-of-darkness-shedding-light-shadow/#sthash.28CVTMxS.dpuf
90% of actual cloud application usage happens without the company IT department knowing - See more at: http://blogs.intralinks.com/collaborista/2014/10/out-of-darkness-shedding-light-shadow/#sthash.28CVTMxS.dpuf
90% of actual cloud application usage happens without the company IT department knowing - See more at: http://blogs.intralinks.com/collaborista/2014/10/out-of-darkness-shedding-light-shadow/#sthash.28CVTMxS.dpuf

Wednesday, January 7, 2015

Liferay Portal 6.2をインストールしてみよう

こんにちは、おおたにです。 今回はLiferay Portal 6.2のインストール方法について紹介したいと思います。

本ブログでもたびたび取り上げているLiferay Portalは、オープンソースの企業向け情報ポータル製品(Enterprise Information Portal)で、企業のインターネット向けサイトやイントラネット向けサイト、代理店/販売店ポータルなどに代表される組織/企業間、コミュニティポータルなどに代表されるユーザ同士など、様々な形での情報発信/情報共有の場を構築することに利用されています。

エンタープライズ向けと銘打たれているのでインストールの敷居も高いのではないかと思われるかもしれませんが、そんなことはありません。もちろん実運用を考えると諸々の設定やチューニングを行う必要がありますが、とりあえずインストールして使ってみようという限りではとても簡単にセットアップすることができます。

 では、早速インストール方法を見ていきましょう。


Javaのインストール


Liferay PortalはJavaベースのアプリケーションなので、JDKをインストールする必要があります。
Liferay Poratal 6.2の場合はJDK7をインストールします。OracleのサイトからOSに合わせたJava SE Development Kit 7をダウンロードしてインストールしましょう。


Liferay Portalのインストール


続いて、Liferay Portalをインストールします。今回は、アプリケーションサーバ(というかサーブレットコンテナ)としてTomcatを利用します。なお、本記事執筆時点でのCommunity Editionの最新版は6.2 CE GA2となっています。

まずは、LiferayのサイトからCommunity Edition以下のドロップダウンリストをクリックし、「Bundled with Tomcat」を選択して「Go」をクリックします。Bundled with xxxというパッケージは、いくつかのアプリケーションサーバがLiferay向けの設定が施された状態で同梱されているものなので、初めの一歩として利用するにはとても便利なパッケージとなっています。




次に、ダウンロードしたzipファイルを展開します。展開すると liferay-portal-6.2-ce-ga2 というフォルダが作成され、その中に必要なファイルがコピーされます。なお、このフォルダは <LIFERAY_HOME> と呼ばれ、Liferayの設定や運用に際して重要なフォルダとなります。

以上でLiferay Portalのインストールは終わりです(前述のとおり、実運用を考えるとJVMのチューニング等、さらなる設定が必要ですが、ここではひとまず動かすことを目的としているのでデフォルトのままでOKです)。


Liferay Portalの起動と初期設定


では、早速Liferay Portalを起動してみましょう。Liferay Portalを起動するためにはTomcatを起動すればよいので、以下のスクリプトを実行します。

Windows : <LIFERAY_HOME>/tomcat-x.x.xx/bin/startup.bat
Linux (or Mac OS X) : <LIFERAY_HOME>/tomcat-x.x.xx/bin/startup.sh

Liferayが正常に起動すると、ブラウザが自動的に起動して http://localhost:8080 にアクセスします。起動しない場合は手動でブラウザを起動して先のURLにアクセスしてみてください。以下の画面が表示されればOKです。なお、初回起動時はDBテーブル作成等を行うため、通常起動時よりも時間がかかります(手元のノートPCでは90秒ほどかかりました)。



上記画面は初回起動時のみ表示される基本設定画面です。ここではポータル名やデフォルト言語、管理者ユーザの情報やサンプルデータの有無を設定することができますが、デフォルトのままで問題ありません。データベースについてもデフォルトではHypersonicが使われますが、お試し用途であればこのままでOKです。

では、「設定終了」をクリックして次に進みます。しばらく待つと(手元では60秒程度)以下の画面が表示され、無事設定が保存されたことが分かります。


「Go to My Portal」をクリックすると、利用規約が表示されるので「I Agree」をクリックします。続いてパスワードリマインダ(パスワードを忘れた時の秘密の質問)を入力して「Save」をクリックします。以下のランディングページが表示されたら設定完了です。


なお、デフォルトでの管理者のユーザID(Eメールアドレス)はtest@liferay.com、パスワードはtestとなっていますので、次回以降Liferay Portalにログインする際にはこれらを入力する必要があります。

以上でLiferay Portalが使える状態になったかと思います。みなさまも是非Liferay Portalをインストールしていただき、実際に触ってみてください!


トラブルシューティング


Liferayが正常に起動しない場合は、以下のログの内容を確認してみてください。

<LIFERAY_HOME>/logs/liferay.xxxx-xx-xx.log
<LIFERAY_HOME>/tomcat-x.x.xx/logs/catalina.xxxx-xx-xx.log

また、サーバに宛がわれたメモリを確認してください。Liferay Portalはデフォルトでヒープに1GB、PermGenに256MB使う設定となっています。2GBだとギリギリですので、最低でも3GBは欲しいところです。

Thursday, December 25, 2014

それ、CMISで繋げます(Liferay編その1)

CMISは文書管理リポジトリにアクセスするための仕様ですが、「CMIS対応しているっていうけど、何ができるの?」という質問を最近ときどき頂きます。

何ができるか、という質問に対する答えは、技術的な観点に限定しても、以下の2つの要素に分解できるでしょう。
・CMIS単体で提供される、文書管理機能のセット
・CMISによるシステム間連携

CMISは、連携、あるいはデータやサービスの相互運用性(interoperability)を主眼として策定されたもので、そのために文書管理機能としてはいろんなECMの最大公約数的な機能に絞られています。そういう意味では、CMISで実際にいろいろ繋いだものをお見せするのが、CMISのメリットを理解していただく早道かと思います。
(※最大公約数とはいえ、CMISの提供する文書管理機能にもある種のクセはあるのでその点は機会があれば別途)

 Liferayと繋いでみた

というわけで初回はLiferayと繋いでみましょう。
Liferayでは、そのCMS的な機能のバックエンドとして、バージョン6.1からCMISリポジトリをサポートしています。

ここではLiferay6.2を使用して、弊社製品であるCMIS対応の文書管理リポジトリであるNemakiWareに接続してみます。
NemakiWareを使う理由なのですが、単に弊社製品だからという商売っ気だけでなく、実際にCMIS仕様の遵守率が100%で、他ECMと比較しても現時点で1位にあるからです。
http://cmissync.org/CmisCompat/

NemakiWare自体のインストール・起動はまた別途ご紹介しますが、
インストーラのダウンロード:こちら
インストール・起動方法:こちら
になります。

CMIS接続のための設定は、LiferayのWiki(英語)を参照しました。
 
 

下準備

Liferay側での下準備として、ポータルのプロパティ(portal-ext.propertiesなど、プロパティの上書き機構に準ずる)に
session.store.password=true
company.security.auth.type=screenName 
と設定します。
 
この設定では、Liferay上のログインユーザ持つスクリーン名/パスワードが、CMISリポジトリにログインするためのユーザID/パスワードと一致している必要があります。
LiferayのUIからCMISリポジトリを操作することになるので、Liferayのログインユーザ情報がCMISリポジトリのログインユーザ情報として引き渡されるためです。
もしCMISリポジトリがLDAP認証などに対応していれば、ID/PWDは簡単に統一化できるでしょう。

ここではLiferay、NemakiWareともに、admin/adminユーザでログインするものとします。

リポジトリの追加

AdminメニューのContentを開きます。

左側のペインからDocument and Mediaを開き、AddボタンのドロップダウンメニューからRepositoryを選択します。

新規に追加するリポジトリのために、設定項目を入力します。
重要なのは
・RepositoryType
CMISには接続方式として、WebService、AtomPub(およびBrowser)が定義されています。ここではAtomPubが推奨されています。
・AtomPub URL
AtomPubで接続する場合のコンテキストURLを入力します。おつかいのCMISリポジトリによって当然異なります。なお、このURLを開こうとするとリポジトリ全体の情報を記述したxmlファイルがダウンロードできます。NemakiWareの場合はデフォルトで
http://localhost:8080/core/atom
です。
・RepositoryID
省略可能です。
CMISサーバでは、一番大きな単位としてリポジトリがあり、1つのCMISサーバは複数のリポジトリを持てることになっています。ですが実際は「メイン」リポジトリが1つだけということも珍しくありません。
この値を省略すると、CMISサーバ側で設定されているメインリポジトリが自動的に選択される仕組みになっています。

最後にもう1つ、Permissionという設定項目がありますが、これはLiferay上で、このCMISリポジトリを見られるユーザを制限するものです。CMIS側の権限設定とは関係ありません。
値にはAnyone(Guest Role), Site Members, Ownerがあります。

以上、設定できたらSaveを押したら、リポジトリの追加完了です。

Liferayのスクリーン名/パスワードがCMISリポジトリのそれと一致していない場合は、エラーになります。上手く行かない場合はCMISリポジトリ側のエラーログを見てください。

コンテンツの表示

CMISリポジトリにあるコンテンツに、LiferayのUIからアクセスできることを確認してください。ファイルに対して、コンテキストメニュー的なものも表示されていますね。アクションとしてCheckoutも行えるようです。

Checkout時の挙動については、CMISリポジトリごとに微妙に揺れがあるので、また次回の話題とさせていただきます。

なお、画像にもあるようにリポジトリを追加すると"Access these files offline using Liferay Sync."というメッセージが表示されます。Liferay Syncの説明はここでは省きますが、オフラインのときにした編集でもDropboxライクに同期できる仕組みです。

CMISリポジトリに限っていえば、CMISインタフェースのレベルでCmisSyncというDropboxライクな同期ツールが既に存在していますので、そちらもご検討ください。と陰に陽に自社製品をご紹介させてもらいまして、今回の結びとさせていただきます。


(文:linzhixing)

Monday, December 22, 2014

Alfresco勉強会#25でAlfrescoのアップグレードについて発表しました

こんにちは、かわべです。
12月17日に弊社オフィスで第25回Alfresco勉強会が開催されました。
寒い中ご参加いただいた皆様、ありがとうございます!

発表振り返り

今回は発表が2つありましたが、発表ごとに別の記事としています。
私はAlfrescoのアップグレードについて発表しました。
発表資料はこちら

Alfrescoのアップグレードは、コンテンツ実体(ファイルシステム)とメタデータ(データベース)のコールドバックアップデータを新しいAlfrescoに移行することで実行できます。ただし、カスタムモジュールなどが移行対象のバージョンでも期待通り動作するか、事前に検証することも大切です。
という発表の最後に、デモとして4.2.fから5.0.cへのアップグレードをお見せした…の で す が!

うまくいきませんでした…
(3回ぐらい練習したのに…)

時間を掛けた割に、ちゃんとしたものをお見せできなくてすみませんでした。
検証したところ、SQLのdumpを書き戻すときにデータベース名を指定する部分を飛ばしてしまったようです。
あのあと一旦DBをドロップして、再作成してから書き戻すとちゃんと移行できました。
勉強会が終わるまでに解決できなかったのが心残りですが、資料の手順は間違っていないはずなので参考にしてみてください。

告知1

次回のAlfresco勉強会は2015年2月18日(水)に開催予定です。
たくさんの方のご参加をお待ちしております!参加登録はこちらからお願いします。
また、「こういうテーマの発表が聞きたい」などのご意見があれば、ぜひconnpassのフィードなどでご連絡ください。

告知2

こちらは勉強会ではなく、弊社セミナーのご案内です。
2015年1月20日(火) 19時〜20時、Alfrescoの基本的な機能や使い方についての少人数セミナーを開催いたします。
(勉強会の終わりではWebinarだとお伝えしてしまいましたが、弊社オフィスで行うようです)
詳細や申し込み、お問い合わせは以下のリンクからお願いします。
基礎からわかるAlfrescoセミナー
ご都合が合えば、こちらもぜひご参加ください。

Thursday, December 18, 2014

Alfresco勉強会#25でワークフローについて話しました

とたにです。

久しぶりにAlfresco勉強会でしゃべりました。
今回はAlfrescoのワークフローについて、どういった機能が用意されているのか、また新しくワークフローを追加するにはどんな作業が必要なのかを具体的にイメージしてもらえることをゴールにして、入門レベルの内容を準備しました。

ワークフローはAlfrescoの活用方法によっては重要な位置づけとなる機能ですが一方で全く利用するつもりのない方もいるので、勉強会の題材としては少しささる人が少ない、狭い話題を選んでしまったかも、という反省をしつつこのブログを書いています。

アドバンストワークフローでは最低限必要な2つのファイルのみを作って、Alfrescoにワークフローを追加する方法について説明したのですが、説明後に「もっと簡単にワークフローを開発する方法はありますか?」という質問を頂きました。アドバンストワークフローはactivitiというBPMエンジンを採用していてプロセスの記述能力は非常に高いのですが、その反面、開発者レベルのスキルが要求されるのも事実です。このあたりは勉強会で理解いただくというアプローチのほかに、手軽に利用できるワークフローのセットを公開して選択して使っていただく、というアプローチもいいかもしれないと思いました。

また日本型ワークフロー(という言葉があるかどうかは知らないですが)では、必ず期待される機能として承認フロー上の承認者としてユーザの上司を自動でアサインしたい、というものがあり、それについても質問されたのですが、標準のAlfrescoにはそのような組織モデルが実装されていないので実現するためには、Alfresco内もしくは外部にそのような組織モデルおよび取得のサービスを実装する必要があります。

第25回Alfresco勉強会ワークフロー入門編
サンプルコードはこちら

ワークフローの開発は細かいTipsがたくさんあるので応用編として書ける内容もまだまだあるのですが、やはり少し題材として狭いので勉強会で取り上げるかは現時点では未定です。他のネタが思いつかなければ取り上げるかもしれません。

Wednesday, December 17, 2014

Alfresco 5.0とActive DirectoryでNTLM SSOを設定する

こんにちは。おおたにです。今回はActive Directory(以下AD)と連携してAlfrescoでSSOを実現する方法を紹介したいと思います。


何が実現できるのか


AlfrescoとADのSSO設定を行うと、ADで管理された端末からユーザID/パスワードを入力することなくAlfrescoにアクセスできるようになります。

端末上のWindowsにログインする際に利用した認証情報(ADによって管理されているユーザに関するもの)を利用し、Alfrescoへのアクセス時に自動的に認証を行います。認証方法としてはNTLM v1とKerberosの2種類がありますが、以下ではNTLM v1を使ったSSOの設定手順を説明します。


必要なもの


以下の説明での前提条件、事前に準備が必要なものは以下のとおりです。なお、筆者はAlfresco 5.0.b、Windows Server 2012 (AD)、Windows 7 Professional (Client)という構成で動作確認を行いました。
  • Alfresco 5.0 (3.2以上であれば基本的に同様の手順で設定可能です)
  • Active Directoryサーバ
    • サーバ名もしくはサーバIP (ここでは kate とします)
    • ドメイン名 (ここでは aegif.local とします)
    • LDAPサービスでユーザ/グループ情報の取得権限を持つユーザ名 (ここではAdministrator を使います)
    • 上記ユーザのパスワード (ここでは thepassword とします)
    • ユーザ情報格納先のベースDN (ここでは cn=Users,dc=aegif,dc=local とします)
    • グループ情報格納先のベースDN (ここでは cn=Users,dc=aegif,dc=local とします)
    • ドメインに所属するクライアントPC(テストに利用します)

Alfrescoの設定


まずAlfrescoをダウンロード、インストールします。インストーラが提供されているのでインストール自体はそんなに難しくありませんが、こちらの記事が参考になると思います。インストールが完了したら、 ブラウザで http://localhost:8080/share にアクセスし、adminユーザでログインできることを確認しておいてください。

Alfrescoが正しくインストールされたら、alfresco-global.propertiesに以下の設定を追記します。

<tomcat_dir>/shared/classes/alfresco-global.properties :
authentication.chain=passthru1:passthru,ldap-ad1:ldap-ad,alfrescoNtlm1:alfrescoNtlm
ntlm.authentication.sso.enabled=true

ldap.authentication.active=false
ldap.authentication.userNameFormat=%s@aegif.local
ldap.authentication.java.naming.provider.url=ldap://kate:389

ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=Administrator@aegif.local
ldap.synchronization.java.naming.security.credentials=thepassword
ldap.synchronization.groupSearchBase=cn\=Users,dc\=aegif,dc\=local
ldap.synchronization.userSearchBase=cn\=Users,dc\=aegif,dc\=local
synchronization.import.cron=0 0 * * * ?

passthru.authentication.useLocalServer=false
passthru.authentication.domain=aegif.local
passthru.authentication.servers=aegif.local\\kate
passthru.authentication.defaultAdministratorUserNames=Administrator

ドメイン名、サーバ名、LDAP認証情報、ベースDN等は環境に合わせて設定してください。以下、上記設定の説明です。
  • authentication.chain でAlfrescoログインのための認証チェーンを指定します。passthruがSSO認証、ldap-adがAD認証(ユーザ/パスワード入力タイプ)、alfrescoNtlmがAlfrescoが管理するユーザ情報での認証です。認証チェーンとは、複数の認証方式を連鎖させるもので、ここでは、SSO→AD認証→Alfresco認証の順に認証をトライします。
  • ntlm.authentication.sso.enabled=true でNTLM SSOが有効になります。
  • ldap.authentication.active=false でldap-adの認証機能を無効化し、ldap.synchronization.active=true でldap-adのユーザ/グループ同期機能を有効化します。
    • ここではAD認証自体は行わず、AD上のユーザ/グループ情報をAlfrescoに同期させる(定期的に差分情報をインポートする)ことのみを行います。
  • synchronization.import.cron で同期周期を設定します。デフォルトでは1日1回0時に実行されます(上記例では毎時0分に実行されます)。
  • passthru.authentication.useLocalServer でADサーバ上でAlfrescoが稼働しているか否かを指定します。falseの場合は passthru.authentication.domain, passthru.authentication.servers を指定する必要があります。
  • passthru.authentication.defaultAdministratorUserNames にAlfrescoの管理者権限を与えたいユーザ名を列挙します。

次に、share-config-custom.xmlの設定を変更します。デフォルトでは以下のSSO向けの設定がコメントアウトされていますので、コメントアウトのタグを外して設定を有効にします。

<tomcat_dir>/shared/classes/alfresco/web-extension/share-config-custom.xml :
   <config evaluator="string-compare" condition="Remote">
      <remote>
         <keystore>
             <path>alfresco/web-extension/alfresco-system.p12</path>
             <type>pkcs12</type>
             <password>alfresco-system</password>
         </keystore>
         
         <connector>
            <id>alfrescoCookie</id>
            <name>Alfresco Connector</name>
            <description>Connects to an Alfresco instance using cookie-based authentication</description>
            <class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
         </connector>
         
         <connector>
            <id>alfrescoHeader</id>
            <name>Alfresco Connector</name>
            <description>Connects to an Alfresco instance using header and cookie-based authentication</description>
            <class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
            <userHeader>SsoUserHeader</userHeader>
         </connector>

         <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfrescoCookie</connector-id>
            <endpoint-url>http://localhost:8080/alfresco/wcs</endpoint-url>
            <identity>user</identity>
            <external-auth>true</external-auth>
         </endpoint>
      </remote>
   </config>

以上でAlfrescoの設定は終わりです。設定を反映させるため、Alfrescoを再起動します。


Active Directoryサーバの設定


次に、ADサーバ上での設定を行います。AlfrescoのNTLM SSOはNTLMv1だけでNTLMv2に対応していないため、AD配下のクライアントのLAN Manager認証レベルを変更する必要があります(セキュリティレベルを落としたくない場合はKerberos認証の利用をお勧めします)。

まずは、Win+R を押して gpmc.msc を実行します。「グループポリシーの管理」コンソールが起動するので、目的のドメインのデフォルトグループポリシーを編集します。


以下のエディタが表示されるので、コンピューターの構成→ポリシー→Windowsの設定→セキュリティの設定→ローカルポリシー→セキュリティオプションをクリックし、「ネットワークセキュリティ:LAN Manager認証レベル」をダブルクリックします。


以下のダイアログが表示されるので、「このポリシーの設定を定義する」にチェックを入れて、「LMとNTLMを送信する(ネゴシエートした場合NTLMv2セッションセキュリティを使う)」を選択してOKをクリックします。


以上でADサーバ上での設定は完了です。


クライアントPCの設定


以下の設定は全てのクライアントPCで設定する必要があります。クライアントのログイン情報をAlfrescoに渡すためには、AlfrescoのURLがイントラネットゾーン判定される必要があるため、インターネットオプションのセキュリティ設定にAlfrescoのURLを追加します。

Internet Explorerのインターネットオプションを開き、ローカルイントラネットにAlfrescoのURLを追加します。HTTPでアクセスする場合は「このゾーンは…」のチェックを外します。



テストしてみよう


では、ADユーザでログインしたクライアントPCを利用し、Alfrescoにアクセスしてみましょう。先ほどイントラネットゾーンに追加したURLを使ってアクセスしてください(先のスナップショットの例ですと、http://alfresco.aegif.jp:8080/share となります)。ログイン画面が表示されず、直接ダッシュボード画面が表示されればテスト成功です。


トラブルシューティング



うまくいかない場合は以下のことを試してみてください。
  • alfresco.log, catalina.out等に出力されているExceptionを確認してみる
  • ユーザ/グループの同期が正常に行われているか(AD上のユーザ/グループがAlfresco上にも生成されているか)を確認してみる
  • LDAPクライアントを使ってユーザ/グループの検索ベースDNを実際に確認してみる
  • passthru.authentication.domain, passthru.authentication.servers あたりのプロパティ値から.localを省略してみる

今回の紹介は以上です。AD環境がある場合は是非ADとの連携、SSO設定を試してみてください。

Wednesday, December 10, 2014

CmisSync on Raspberry Pi: The Internet of Things meets document management

Raspberry Pi is a tiny board (the size of a credit card) that allows you to create any kind of robot or fun hardware:


Examples:
- Santa detectors
- Sandwich carriers
- Ultra-cheap laptops (UNICEF)
- Industrial robots
- Audit sensors

And guess what? CmisSync runs on Raspberry Pi!
CmisSync is a file synchronization tool compatible with any document management server (Alfresco/SharePoint/FileNet/Documentum/etc) thanks to the CMIS protocol.
Imagine for instance a tiny sensor measuring air pollution and sending a weekly report directly to your document server over Wi-Fi.

A South African company is already embedding CmisSync in office scanners, so that scanned documents get automatically synchronized to Alfresco or another ECM server:



Compare that with the pain it is to achieve the same thing using a normal scanner, and you can easily feel the need for such intelligent hardware based on open standards.

Raspberry Pi + CmisSync can also be used in environments with no permanent network connection, for instance fleets of trucks travelling in uncovered areas and sending reports (load/unload/sleep) when network becomes available. CmisSync makes the Internet of Things survive Internet cuts.
Nicolas Raoul