• 締切済み

認証と承認の仕組みについて

現在、認証と承認の仕組みに興味を持っており、色々と調べているところなのですが、イマイチ具体的に理解できないので質問させていただきます。 そもそも、認証はIDとパスワード等の組み合わせが正しいか、そうでないのか、で、本人であるかどうかを確認するプロセスのことだと理解しています。 承認は、認証されたユーザに対して、どの様な権限が与えられているのか、また、その与えられた権限を承認するのが、承認のプロセスだと理解しています。 それぞれ、認証と承認は別々のサービスとして存在する(例えば、認証はKerberos認証やNTLM認証、承認はLDAPやActiveDirectory)と認識しています。 ここで疑問なのですが、認証されたユーザと、そのユーザが持っている権限はどのように・どうやって関連づけられているのでしょうか? 例えば、 認証サーバAを設置し、LDAPやActiveDirectoryなどのディレクトリサービスを提供するサーバBを設置し、何らかのサービスを提供しているサーバCを設置している様な環境で、Cにログインするための認証を認証サーバAに問い合わせ、そのサービスに対する権限情報をサーバBから取得し、やっと、サーバCのサービスが利用できる、といった様な流れになるのでしょうか? また、認証サーバAはどうやって、問い合わせのあったサービスを利用する権限をそのユーザが持っていて、またどの程度の権限がある、と言う様な判断はどうやって行われているのでしょうか。 よろしくお願い申し上げます。

みんなの回答

  • aton
  • ベストアンサー率47% (160/334)
回答No.3

No.2です。 ==<No.2お礼より引用>== いずれの場合においても、認証と承認(アクセス権情報の格納)は1つのマシン内で管理する必要がありそうですね。 質問の主旨から行くと、認証と承認を別のマシンで管理する事は可能か、と言うことだったので、皆様のご回答から行くと、難しいのかもしれませんね。 ==<引用終了>== そういう仕組みはあります。 例えばSAMLがそうです。 http://www.atmarkit.co.jp/fsecurity/rensai/webserv04/webserv01.html の真ん中辺り,図1にSAMLのフレームワークが書かれていますが,SAMLにはAuthentication Authority, Attribute Authority, Policy Decision Pointの3つのオーソリティがあり,Authentication Authorityが認証を,Policy Decision Pointが承認を担っています。 SAMLの仕様は http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security にあるので,興味があれば調べてみてください。

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/webserv04/webserv01.html
paradium-
質問者

お礼

だんだんとわかってきた気がします。 色々と詳しくありがとうございました。 もう少し色々勉強してみたいと思います。

  • aton
  • ベストアンサー率47% (160/334)
回答No.2

認証=authentication(以下authn), 承認=authorization(以下authz), と解釈して話を進めます。 Authzのアクセス権を管理する方法は,大きく ・アクセス対象(ファイルなど)のメタ情報として管理する ・アクセス者(ユーザー)のメタ情報として管理する の2方式に分けられると言われています。 質問の主旨は,おそらく,後者の場合,そのアクセス権情報がどこに格納されていて,どういうタイミングで利用されるのか,ということだと思います。 実際のところ,これについては,実現方式によりさまざまです。 一番単純なやり方としては,例えば,認証機能をもつディレクトリーサーバー(LDAPやActiveDirectory,質問のA+B)に,ユーザー毎にどのサービスへのアクセス権があるかを格納しておき,authzの時にサービス提供サーバー(C)から,ディレクトリーサーバーに問い合わせる,という方法が考えられます。または,authnが終わったら,そのユーザーが所有するアクセス権をオブジェクト化し,有効期限(例えば認証セッション終了時)が終わるまで持ち回るという方法も考えられます。この場合,サービス利用毎にいちいちディレクトリーサーバーに問い合わせる手間が省けますが,アクセス権オブジェクトが複製されたり有効期限を越えて利用されたりする危険があるのでセキュリティ的には弱くなります。 またこのバリエーションとして,Kerberosのように,KDC内に Authentication Server (AS, 認証サーバー)と Ticket-Granting Server (TGS,チケット交付サーバー)を持ち,ASが認証(Aの役割)を,TGSがアクセス権オブジェクトの生成(Bの役割)を行うようなシステムもあります。Kerberosの場合,ユーザーはまず利用したいサービス(C)を決め,当該サービスの利用券(アクセス権オブジェクト)をKDCに要求します。KDCはユーザーをASで認証した後TGSに転送し,TGSは当該ユーザーの当該サービスへの利用券をユーザーに交付します。ユーザーはそれを持ってサービスCに行き,サービスを受ける,という流れになります。 (参考URLはKerberosの解説) このように,ユーザーのメタ情報としてのアクセス権をどこに格納し,どのタイミングで取り出すかについては,いろいろな方法があり,一概にこれ,と答えることはできません。

参考URL:
http://www.ne.jp/asahi/yokohama/juk/krb/krb-open.html
paradium-
質問者

お礼

大変わかりにくい質問の仕方をしてしまって、すいませんでした。 概ね理解できました。ご回答ありがとうございました。 いずれの場合においても、認証と承認(アクセス権情報の格納)は1つのマシン内で管理する必要がありそうですね。 質問の主旨から行くと、認証と承認を別のマシンで管理する事は可能か、と言うことだったので、皆様のご回答から行くと、難しいのかもしれませんね。 ありがとうございました。

  • Palikari
  • ベストアンサー率42% (61/142)
回答No.1

詳細と正確なところは後続の回答者におまかせして、以下概略です。 認証は記述の通り、ユーザ認証のことであり、 承認は記述の通り、アクセス権の確認のことで合っていると考えます。 また、認証では加えて、 ユーザと所属する組織/グループ等情報を関連付けます。 認証とアクセス権確認は別機能ではありますが、 別個のサービス(service)として起動していたかは不確かです。 なお、Kerberos認証やNTLM認証,LDAP,ActiveDirectory(AD)は全て認証側のものです。 LDAPやADは認証サーバ/ディレクトリサーバ, Kerberos認証やNTLM認証は認証機構、Kerberos認証はADで、NTLM認証はNTで使われていたりします。 ファイルやフォルダのアクセス権などの情報は、 フォルダに記録されています。 #UNIXはそう。Windowsも同じと思いますが未確認。 よって、 ログイン時に、ディレクトリサーバ等でユーザとパスワードのマッチングを確認、 かつユーザと所属組織/グループ等の情報が関連付けられ、 ファイル等アクセス時に、ファイル等の所持するアクセス権情報を確認して、アクセスが承認されます。 基本はこれで間違っていないはずなのですが、 すいません、裏づけのための確認をしていません。

paradium-
質問者

補足

ご回答ありがとうございます。 補足で疑問点があるのですが、ACL等を利用した様な一元管理を行うような場合は、どういった流れで認証・承認がおこなわれるのでしょうか? フォルダにアクセス権が記録されている場合は、なんとなくイメージしやすいのですが、各種リソースに対するアクセス権等はどうやって、どこの誰が管理しているのでしょうか?

関連するQ&A

  • LDAPのユーザー認証について

    本やいろんなサイトを回ったんですが いまいち理解できてないので質問します。 RedHatLinux9をインストールした LDAPサーバー(S)とLDAPクライアント(C)と2台あります。 LDAPクライアント(C)の認証をLDAPサーバー(S)側で行おうと思っているんですが、ここがよく理解できてません。 LDAPクライアント(C)にログインする時に、LDAPサーバー(S)でしか設定していないユーザーだと、入れないですよね?まずホームディレクトリが存在しませんし。かといってホームディレクトリ作っても、LDAPクライアント側にはそのユーザーはいないのでchownでオーナーの指定ができませんよね? となるとやはりサーバー&クライアント両方に同じユーザーを作る必要があるんでしょうか? あたりまえ過ぎる質問かもしれませんが わからないんです。よろしくお願いします

  • LDAP認証について ADとの違いは???

    よくパッケージソフトでLDAP認証対応と書いたものがあると思いますが、その辺の知識をお持ちの方ご教示いただけませんでしょうか? 上記のLDAP認証はActiveDirectoryを認証の基盤として利用できるという認識で良いものなのでしょうか? ActiveDirectoryユーザーでWindowsクライアントにログインさえすれば利用するパッケージソフトでのログインを不要としたいのです。 それか何か別のものを用意しなくてはならないのでしょうか? あまり費用はかけれないのですが詳しい方よろしくお願い致します。

  • LDAP認証について質問させて下さい。

    LDAP認証について質問させて下さい。 環境は以下の通りです。 OS:Solaris10 LDAP:sun java system directory server 6.3 現在、LDAPサーバ自身のOS認証にLDAPサーバ(自分自身)を使用することを 考えているのですが、そのような構成は可能なのでしょうか? マニュアルを見てもよくわからず質問させて頂きました。 不可能な場合は、その理由も教えていただけるとありがたいです。 また、LDAPサーバ上に、sybaseとsambaをインストールして、 ユーザ認証をLDAPで行おうかと考えているのですが、そのような構成も可能なのか 教えていただけたら幸いです。 よろしくお願いします。 以上です。

  • ユーザ認証のあるサービスを社内で利用したときの挙動に関して

    インターネット上でユーザ認証のあるサービスを提供しているのですが、ある会社内からアクセスすると他のユーザ(他の社員)のページが表示されてしまうと言われました。これは社内に設置されているプロキシサーバの問題でしょうか?それともサービス提供側のHTTPサーバの設定の問題でしょうか?

  • 認証の一元管理

    クライアントは全てWindowsですが、サーバがWindows 2000 ServerとSolarisサーバの混在です。現在はWindowsのユーザ認証を行っていますが、UNIX環境の認証(NIS)とアカウントやパスワードの同期をとらせ、一元管理する場合は、やはり、Service for UNIXやLDAP、Kerberosを利用する方法しかないのでしょうか。すいませんが、アドバイスください。

  • tomcat ldap認証につきまして。

    ◆環境 centos6.7(64bit) apache2.2.27 tomcat 8.0.28 java version "1.8.0_65" ◆やりたいこと。 上記の環境で、basic認証周りを勉強しています。 通常のtomcat-users.xml での認証ではなくldapに登録しているグループ・ユーザーで認証できるように設定がしたいと考えています。 その中で、いろいろなサイトを見ていますと、tomcatの場合はActive Directory認証の内容が よく掲載されています。 私の中で、ldap認証で行いたいと思っているのですが、中々参考になるサイトが 見つからず。 理想は、http://www.server-world.info/query?os=CentOS_6&p=ldap&f=[1-9] で構築したldapで、tomcat managerなどの認証を行いたいと考えています。 すいません、上記設定が載っている参考になるサイトなどご教授いただければと思います。

  • LDAP認証について

    お世話になっております。 この質問がこのカテゴリであっているか自身がありませんが、実行プログラムがASPなため、このカテゴリに質問させて頂きます。 LDAP認証をする場合、OUがない、ActiveDirectoryは、OUに何を指定すればいいのでしょうか?「Users」でいいのでしょうか? 以下プログラム strLdapPath="LDAP://xxx.xxx.xxx.xxx/CN=123,OU=???,DC=xxx,DC=xxx" strUserID="123" strPassword="****" Set obj = objLdap.OpenDSObject(strLdapPath, strUserID, strPassword, 0) よろしくお願い致します。

  • Rails ActiveDirectoryについて

    RailsにてActiveDirectoryへの認証をしようとしています。 net-ldapのgemを使用しています。 conn.bindでTrueが返ってくるので接続は出来ていると思いますが、 そこから、ユーザID、パスワードを検索することができません。 どなたか、詳しい方がいらっしゃいましたら、ご教授願います。 conn = Net::LDAP.new :host => SERVER, :port => PORT if conn.bind ここでユーザID、パスワードを検索して、合致すれば認証OKとしたい end 【環境】 Ruby 2.2.2 Rails 4.0.13 net-ldap (0.11) 以上、宜しくお願いします。

    • ベストアンサー
    • Ruby
  • ActiveDirectoryのログイン認証時に使用したユーザー名の取得

    ActiveDirectoryのログイン認証時に使用したユーザー名、パスワードをHTMLページで取得する方法がわかりません。 ログインのタイミングはhtmlページのActiveDirectoryのあるサーバのHTMLファイルへのリンククリックでActiveDirectoryのあるサーバに接続します。 htmlページは認証後、画面移動で表示されます。 認証で使用したユーザー名、パスワードをHTMLの中でも使用したいと思っています。 サーバーのOSはWindows2000サーバーで、WebサーバはIISを使用しています

  • PHPでの認証方法

    お世話になります。 現在PHP言語でのActive Directoryへの認証を考えています。 KADM5関数やLDAP関数等を使用するらしい事は分かったのですけれども、使い方がよく分からなくて困っています。 例えば、 サーバー名が「server01」 ドメインが「d01」 ユーザーアカウント「user01」 パスワードが「abc」 の認証を、直接WEBページのフォームからユーザーIDと パスワードを入れて、認証が出来ます基本的な例文などがございましたら、教えていただけましたらと思っています。 また、できましたら、パスワードの期限がきました時の変更などもweb上で、できましたらと思っています。 よろしくお願いいたします。

    • 締切済み
    • PHP