問題タブ [kerberos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - WCFでKerberosがデフォルトでNTLMになっているのはなぜですか?
ホストとクライアントの2つのコンソールプロジェクトを持つ単純なWCFデモアプリを入手しました。両方とも私のマシンで実行されています(7ボックスに勝ちます)。Windows認証を使用するnetTcpBindingを使用しています。
問題は、認証がKerberosからNTLMにダウングレードされていることであり、その理由がわかりません。
使用する場合
クライアント側では、すべてがクールです。しかし、これをに変更するとfalse
、次の例外が発生します。
SecurityNegotiationException:リモートサーバーが相互認証要件を満たしていませんでした。
これは、Kerberosが失敗しており、クライアントがNTLMを許可しないため、呼び出しによって例外がスローされることを示しています。
これはプロジェクトの問題ですか、それとも開発マシンの構成に起因する外部の問題ですか?
解決:
どうやら、クライアント構成内でサーバーのIDを指定する必要があります。私の場合、サーバーは私のIDで実行されているので、次のようにクライアントを変更します。
これで問題が解決する理由がわかりません。さて、クライアント側では、サーバーを完全に信頼しています(ねえ、私はその男を知っています!)。しかし、NTLMはKerberosよりも安全性が低いので、なぜその逆ではないのでしょうか。サーバーを完全に信頼していない場合は、Kerberosを使用します。それ以外の場合は、ntlmで問題ありません。
または、OTOH、サーバーを完全に信頼していない場合、なぜサーバーがまったく機能しないのですか?「SecurityException:エンドポイントIDが設定されていません。WCFはサーバーのIDを信頼できず、クライアントIDを送信しません。」
c++ - Kerberosチケットの有効期限が切れているかどうかを確認する方法
Kerberos認証を使用してリモートサービスに接続するクライアント側アプリケーションがあります。チケットを更新せずにADSIでSPNのパスワードをリセットすると、認証は失敗します(もちろん)。問題は、チケットが有効でないことを事前に知る方法があるかどうかです\有効期限が切れています。
java - ネイティブ SSPI API を使用してサービスの Kerberos チケットを取得する Java またはコマンドライン ユーティリティの方法はありますか?
Java で Kerberos を使用してシングル サインオンを実装したいと考えており、Windows ログオンのチケットを使用してサービスのチケットを作成することに成功しました。残念ながら、レジストリ キー「allowtgtsessionkey」が有効になっている場合にのみ、そのチケットを作成できます。無効にするとすぐに、「識別子が期待値と一致しません (906)」というメッセージの例外が発生します。レジストリ キーについては、http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.htmlおよびhttp://support.microsoft.com/kb/308339に記載されています。
残念ながら、アプリケーションが使用されるコンピューターのレジストリにアクセスできないため、変更せずにこれを行う方法を探しています。Internet Explorer または Mozilla Firefox で SPNEGO 経由でシングル サインオンを行うと、チケット キャッシュにサービス チケットが作成されるため、レジストリ キーを設定せずにこれを行う方法が必要です。Javaでこれを行う方法を知っている人はいますか?
助けてくれてありがとう、メミンガー
更新: 私はこの問題をあきらめています。Windows レジストリ キーは、チケット キャッシュ内のチケット (より正確にはサブジェクト) へのアクセスを防ぎます。Windows 上の Java は独自の GSSAPI 実装を使用しており、サービス チケットを作成するにはチケットにアクセスする必要があると思います。ただし、SSPI Windows API はチケット キャッシュに完全にアクセスできるため、サービス チケットを作成できます。この API は Web ブラウザーで使用されますが、Java では使用されません ( http://java.sun.com/developer/technicalArticles/J2SE/security/#3によると)。Web ページに 1 回アクセスした後に Firefox で SSPI を無効にすると (サービス チケットが作成されます)、そのページには引き続きアクセスできるため、SPPI API を使用してサービス チケットを作成するコマンド ライン ユーティリティで十分でしょう。
私たちにとって、これは、シングル サインオンを放棄するか (これは受け入れられません)、アプリケーションのクライアント側で認証を行うことができるようになったことを意味します (ユーザー名を読み取ることしかできず、チケットを検証することはできないため)。サーバー)、これは主要なセキュリティ リスクです。より強力なセキュリティ制約が、使用するには複雑になりすぎて、より大きなセキュリティ ホールにつながる別の例です。
sql-server-2005 - SQL Server - タイムアウト例外
SQL タイムアウトの問題に直面しており、エラー イベント ID がイベント 5586 または 3355 (接続できない/ネットワークの問題) のいずれかであり、他の DB 関連のエラー イベント ID (3351 & 3760 - 権限の問題) が報告されていることもわかりました。さまざまな時期に。
何が理由でしょうか?任意の助けをいただければ幸いです..
kerberos - Kerberos、委任、および SPN に関する混乱
Kerberos 委任を実行する概念実証アプリケーションを作成しようとしています。すべてのコードを書きましたが、動作しているように見えます (正常に認証されています) が、結果のセキュリティ コンテキストには ISC_REQ_DELEGATE フラグが設定されていません。
したがって、エンドポイント (クライアントまたはサーバー) のいずれかが委任を禁止されている可能性があると考えています。ただし、SPN に対して認証していません。別のドメイン ユーザーに対して 1 つのドメイン ユーザーのみ。Iの SPN として、InitializeSecurityContext()
"someuser@mydomain.lan" (サーバー アプリケーションが実行されているユーザー アカウント) を渡しています。私が理解しているように、ドメイン ユーザーはデフォルトで委任が有効になっています。とにかく、管理者に確認を依頼したところ、「アカウントは機密であり、委任できません」チェックボックスがオフになっています。
サーバーが NETWORK SERVICE として実行されていて、SPN を使用してサーバーに接続した場合、AD のコンピューター アカウントで [委任に対してコンピューターを信頼する] チェックボックスがオン (既定ではオフ) になっている必要があることはわかっていますが、 ……そんなことないですよね?またはそれは?
また、コンピュータ アカウントのチェックボックスが設定されている場合、変更はすぐに適用されますか、それともサーバー PC を再起動するか、しばらく待つ必要がありますか?
c++ - LsaCallAuthenticationPackageは、特定のチケットをパージしようとするとERROR_INVALID_PARAMETER 87(0x57)を返します
LsaCallAuthenticationPackageを使用して、キャッシュから特定のチケットを削除しようとしています。パッケージステータスで常にERROR_INVALID_PARAMETER87が発生します。理由は何でしょうか?これが私のコードです(他のすべてのステップは成功しました):
pTktCacheResponse =(KERB_QUERY_TKT_CACHE_RESPONSE)pRep;
for(ULONG i = 0; i <pTktCacheResponse-> CountOfTickets; ++ i){KERB_TICKET_CACHE_INFO&ti = pTktCacheResponse-> Tickets [i]; if(/何らかの条件/){KERB_PURGE_TKT_CACHE_REQUEST req; req.MessageType = KerbPurgeTicketCacheMessage; req.ServerName = ti.ServerName; req.RealmName = ti.ServerName; req.LogonId.HighPart = req.LogonId.LowPart = 0;
ありがとう!!
dns - 複数のドメインで kerberose-sso-negotiate を構成する
mycorp.com、ch1.mycorp.com、mycorp2.com ドメインがあります (すべて Windows です) sso-kerberose-negotiate 認証を構成しています mainaaa3.mycorp2.com で実行されているサーバーで、spn "http:/mainaaa3 を作成しました.mycorp2.com」を作成し、ドメイン間に信頼を設定しましたが、mycorp.com、ch1.mycorp.com ドメインのユーザーがブラウザでネゴシエート チケットを送信しない場合、各ドメインに「 http:/mainaaa3.mycorp2.com」、そして今、私はエラーを持っています: メカニズムレベル: 復号化されたフィールドの整合性チェックに失敗しました (31)
私は何を間違っていますか?
kerberos - AcceptSecurityContext (Kerberos) が SEC_E_LOGON_DENIED を返す
Kerberos 認証を実行する単純なアプリケーションを作成しようとしています (現時点では相互認証はありません)。
オペレーティング システムは Windows Server 2003、標準版です。Active Directory をセットアップし、setspn ツールを使用して SPN を作成しました。
AcquireCredentialsHandle は、クライアントとサーバーの両方で SEC_E_OK を返します。
クライアント側の InitializeSecurityContext は SEC_E_OK を返します。
サーバー側の AcceptSecurityContext は SEC_E_LOGON_DENIED を返します。
次のMSDN記事のサンプル アプリケーションを使用した場合と同じ動作が見られるため、コードに問題はないと確信しています。
したがって、私の設定に何か問題があると思います。しかし、私は何を見つけることができません。SPN セットアップで何かを見逃したのでしょうか。どんな助けでも大歓迎です。
よろしく、デビッド。
php - Kerberos および/またはその他の認証システム - すべての PHP スクリプトに対する 1 回限りのログオン
私は一連の Web アプリを管理しており、ほぼすべてが PHP で記述されており、その上にロールベースの承認システムを構築するための認証プラットフォームを見つけたいと考えています。また、システムサービス(SSHなど)などに使えるように認証システムを拡張できるようにしてほしい。
私が探している主な特徴のいくつかを、重要度順に以下に示します。
- 簡単な PHP の実装 (簡単にロールを保存/読み取るなど)。
- 可能であれば、冗長。認証システムがダウンしても、全員がロックアウトされるわけではありません。
- Windows および Mac 用のクライアントがあります。
- 簡単な Web ベースの管理 (ユーザー/ロールの追加/削除、パスワードの変更)。そうでない場合は、あまり手間をかけずに管理システムを構築できます。
- ワンタイムログオン。
また、認証トークンが発行されたときに、ユーザーの IP アドレスを保存し、それを使用して Web ベース以外のアプリケーションに対してユーザーを承認したいと考えています。そのため、たとえばユーザーがワークステーションでアイドル状態になったときに、デスクトップ クライアントがトークンを発行し、トークンを取り消すようにしたいと考えています。Kerberos が解決策になるかもしれないと考えていますが、他にどのような選択肢がありますか?
winforms - Webサービスを呼び出すときにclient(winform)アプリケーションにNTLMを使用させる方法
IISでホストされているWebサービスを呼び出すwinformアプリケーションがあります。デフォルトでは、クライアントアプリはIISへの認証にKerberoseを使用しますが、何らかの理由で失敗しました。しかし、同じアプリは別のPC(ユーザーログインが異なる)でも正常に動作します。 IISサーバーのイベントログを確認したところ、NTLMを使用していることがわかりました。
とにかく、クライアントアプリ(winform)の認証タイプを変更できますか?
前もって感謝します