問題タブ [negotiate]
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.
ios - HTTP 認証タイプ iOS クライアント アプリケーションでネゴシエートする
「ネゴシエート」HTTP 認証方式は iOS アプリでサポートされていますか?
この認証方式を使用するサーバーにアクセスしようとしています。現在、CFNetwork ライブラリを内部的に使用する ASIHTTPRequest クラスを使用しています。認証が行われず、ASIHTTPRequest コードをトレースすると、CFHTTPAuthenticationCreateFromResponse 関数を呼び出して作成された CFHTTPAuthentication オブジェクトが CFHTTPAuthenticationIsValid 関数によるチェックに失敗した後に失敗することがわかります。返されるエラーは「kCFStreamErrorHTTPAuthenticationTypeUnsupported = -1000」です。CFHTTPAuthentication の作成を試みるために使用する応答には、「WWW-Authenticate = Negotiate」ヘッダーが含まれています。これは、Negotiate スキームがサポートされていないと思わせます。ただし、CFHTTPAuthentication のライブラリ ドキュメントには、「kCFHTTPAuthenticationSchemeNegotiate」が「
以下は、attemptToApplyCredentialsAndResume メソッドの ASIHTTPRequest.m のコードの関連部分です。
また、Negotiate スキーム自体についてもやや混乱しています。私が理解しているように、可能であれば Kerberos スキームを使用しようとし、そうでない場合は NTLM スキームにフォールバックすることになっています。NTLM スキームは iOS でサポートされていますが、少なくとも CFHTTPAuthenticationCreateFromResponse がそれを処理する方法では、このフォールバックは発生していないようです。
curl - rubyを使ったカール
ルビーを介してSPNEGOネゴシエートの種類の認証でCurlを使用しようとしています。
私はいくつかのライブラリを試しましたが、httpi には次のリンクのような縁石アダプターを介してそれを行う方法があるようです:
https://gist.github.com/3179054#comments
リンクに示されているように、JSONデータをファイルの代わりにcurlの「データ」部分として送信する方法があるかどうか疑問に思っていました。(curl -d オプションのことです)
私のカールは次のようになります:
curl -X POST -d "{"id": "12341234","fieldsRequested":["title","state","component"]}" -H >"Accept: application/json" -H "Content-タイプ: application/json" --negotiate -u : >https://abcd.com/find/it
java - 人々はどのようにしてJavaSPNEGOクライアントをWindowsで動作させるのですか?
WindowsでJavaを使用してクライアント側のHTTPSPNEGO認証を行うには、Windowsレジストリキーallowtgtsessionkeyを設定する必要があります。これは十分に文書化されています。私が理解していないのは、人々がこれをどのように回避するかです。ほとんどの企業サイトは、単一のソフトウェアのためにWindowsでこのレジストリキーを変更することを決して受け入れません。また、組織内のすべてのワークステーションでこれを変更する必要がある場合は、面倒なことも考えてください。しかし、これまでのところ、このレジストリキーを変更するようにお客様を説得することができなかったため、これは単なる理論です。
私は彼らを責めません。ほとんどの企業管理者は、これがセキュリティを緩和すると考えているため、反対します。
私はこれを読みました: ネイティブSSPI APIを使用してサービスのKerberosチケットを取得する方法はJavaまたはコマンドラインユーティリティにありますか?
でも今はかなり古いです。
ですから、大学の環境やホームユーザーなど以外で、Windows+Javaクライアント+Kerberosをどのように機能させることができるのか本当によくわかりません。
企業の管理者からの質問は、「IEやFirefoxなどのアプリケーションでこのキーを設定せずにSPNEGOを実行しても問題がないのに、なぜこのレジストリキーを設定する必要があるのですか?」です。まあ、私は答えが何であるかを知っています。これは、(ほとんどの場合)IEやFirefoxなどのアプリケーションがWindowsネイティブGSS API(SSPI)に基づいているのに対し、SunのJavaは独自の実装を使用しているためです。
WAFFLEのようなものを使用すれば問題は解決すると思いますが、純粋なJavaソリューションを好みます。また、SpringセキュリティやApache HttpClientなどのJavaベースのソリューションを使用しても、これらすべてがこの問題に悩まされるため、役に立たないと思います。
ヘルプやポインタをいただければ幸いです。
UPDATE1:
OracleのバグデータベースにこのためのRFEがあることがわかりました。オラクルの従業員によってこの問題について提出されたパッチと、この機能に関するJDKメーリングリストでの議論もあります。これが現在のJava7で利用できないことを理解できる限り、実験的でさえない限り、私はそれほど賢くなりません。右?
UPDATE2:
質問は、OpenJDKSecurityDevメーリングリストで再び生きています。
c# - C# は、2 台のコンピューターが信頼されたドメインにあるかどうかを確認します (または: winrm 接続の認証メカニズムを決定します)。
winrm 経由で他のコンピューターに接続したい。接続先のコンピュータの FQDN しか取得できませんでした。宛先が信頼できるドメインにあるかどうかの情報がありません。したがって、基本的な質問は、接続に必要な認証メカニズムをどうすればよいかということです。それを確認する C# .NET メソッドはありますか?
または、認証メカニズムを kerberos に設定し、失敗した場合はネゴシエートに設定する簡単な方法はありますか?
http - このリクエスト ヘッダーを平易な文に解釈するにはどうすればよいですか?
以下のリクエスト ヘッダーで何がリクエストされているかを 1 文で説明できますか? (各用語の説明を見つけることができるように:Negotiate、Basic-realm、NTLM)
WWW-Authenticate Negotiate NTLM Basic realm="localhost"
ありがとう
jquery - シングル/ネゴシエート json 応答なし - シングル/接続なし
現在取り組んでいるプロジェクトで SignalR ライブラリを使用しようとしています。私はいくつかのブログを読み、いくつかのスタックオーバーフローの回答を見て、シグナルのドキュメントをチェックしましたが、運がありませんでした。以下のコードは、私が動作させようとしている最も単純なサンプルにすぎません。
ハブ、jquery 2.0.0、ASP.NET MVC2、.NET Framework 4 で SignalR 1.0.1 を使用していますUrl.Content("~/signalr/hubs")。ページのソース コードで signalr/hubs をクリックすると、SignalR によって生成された js コードが表示されます。
RouteTable.Routes.MapHubs();Application_Start() My Hub の先頭にも追加しました。
jQuery ドキュメント準備ブロック内のクライアント コード
問題は、
http://localhost/EC/signalr/negotiateステータス 200 OK を返しますが、応答本文が空であるため、接続が作成されないことです。
を設定しようとしましたrunAllManagedModulesForAllRequests="true"が、何も変更しませんでした。また、試し$.connection.hub.url = 'http://localhost/EC/signalr';ましたが、効果はありませんでした。
また、ハブ クラスを Hubs フォルダーまたはプロジェクトのルートに保持しました。
アイデアが不足しているため、解決策を探す方法と場所を教えていただければ幸いです。
java - Java の kerberos 認証が直接 IP アクセスまたはホスト エイリアス アクセスをサポートしない理由
mybox.domain2.company.com などの私のコンピューター (Windows、JDK7 update 21 x64) は、会社のドメインに接続されています。3 つの異なる URL でサイトにアクセスできます。
また
また
IE や Firefox などでネゴシエート認証を使用します。ここで、domain1.company.com と domain2.company.com は、私の会社の 2 つのドメインです。このサイトは IIS 7 に配置されており、その認証は "Negotiate" です。
グーグルでkerberosを設定した後、JavaでURLConnectionを使用してアクセスできます
. ただし、ブラウザーで IP またはホスト エイリアスを使用してそれを行うことはできますが、Java ではできません。誰でもダイレクト IP アクセスまたはホスト エイリアス アクセスを実現できますか?
krb5.conf:
login.conf:
(例として、すべてのホスト名が与えられていることに注意してください。)
kerberos - Kerberos TKT から HTTP ヘッダーで送信される SPNEGO トークンを作成するには?
ネゴシエートを使用してプロキシで認証する必要があるアプリケーションを開発しています。ユーザーが Kerberos クライアントをインストールしていない可能性があります。プラットフォームへの依存を避けるために、MIT Kerberos Library を使用してこれを達成しようとしています。krb5_get_init_creds_password を使用して TKT を正常に取得し、krb5_verify_init_creds を検証しました。ここで、この TKT を使用して HTTP ヘッダーで送信される SPNEGO トークンを作成したいと考えています。SPNEGO トークンを作成するための API またはメソッドを教えてもらえますか?
wcf - ネゴシエーションが機能するように、基本認証オプションと Windows 認証オプションを使用して WCF サービスを公開する方法
一部のクライアントは基本認証を使用して WCF SOAP サービスに接続できる必要があり、他のクライアントは Windows 認証を使用する必要があります。通常は IIS でサービスをホストしていますが、あまり開発されていない Windows サービス ホスティング オプションも提供しています。
基本認証と Windows 認証の両方をサポートするように 1 つのエンドポイントを構成することはできないと理解しています。したがって、サービスごとに 2 つのエンドポイントがあります。
これらは、IIS の同じ Web アプリケーションにあります。その Web アプリケーションでは、基本認証と Windows 認証の両方が有効になっています (そうでない場合、上記のバインドのいずれかが機能しません)。
クライアントが Windows で認証されたエンドポイント (URL の末尾に「win」が付いている) を使用する場合、これは通常は正常に機能します。最初の要求に認証情報が含まれていない場合、クライアントと IIS の間でネゴシエーションが行われ、Windows 認証で解決され、すべてがうまくいきます。
クライアントが Basic 認証エンドポイント (URL の末尾に「win」なし) を使用する場合、正しいエンコードされた資格情報を含む Authorization HTTP ヘッダーが含まれている場合、これは機能します。ただし、最初の要求に認証情報が含まれていない場合、ネゴシエーションは Windows 認証を選択することになります。これにより、IIS セキュリティを通過する要求が取得されますが、基本認証されたエンドポイントに送信されるため、WCF は要求を拒否します。
私は交渉で何が起こっているのか正確にはわかりません。しかし、要求の特定の WCF エンドポイント URL が Basic のみをサポートしているにもかかわらず、IIS は Web アプリケーション (つまり、Basic および Windows) に対して有効なすべての認証方法を提供しているように思えます。
ネゴシエーションで正しい答えを導き出すために IIS でできることがあるかどうか知りたいです。つまり、要求が Basic 認証されたエンドポイントに対するものである場合、クライアントに Basic を使用するように指示します。もちろん、要求が Windows で認証されたエンドポイントに送信されたときに、ネゴシエーションで最終的に Windows が選択されるようにしたいと考えています。
そうでない場合は、Windows サービスでホストされているバージョンのサービスに集中したほうがよいと思いますか? それとも、何らかの形で同様の問題が発生しますか?
最終的な注意: 一部の内部使用には Basic と HTTP を使用していますが、これが安全でない組み合わせであることはわかっています。したがって、本番環境で使用する場合は通常、HTTPS をオンにします。簡単にするために、ここでは省略しました。