1. 程式人生 > >伺服器已拒絕客戶端憑據 the server has rejected the client credentials

伺服器已拒絕客戶端憑據 the server has rejected the client credentials

我們的WinForm程式同構WCF與部署在伺服器上的服務端相連。今天很多WinForm使用者反映,在使用的時候遇到問題,丟擲異常伺服器已拒絕客戶端憑據,the server has rejected the client credentials.

現在說一說WCF的安全認證問題。一般我們做的區域網應用,都沒有加入任何的安全配置,那麼WCF預設的安全配置是什麼呢?如果不做任何安全配置,那麼WCF採用Windows安全認證。預設等於做了如下配置:

<netTcpBinding>

  <binding name="netTcp">

    <security mode="Transport">

      <transport clientCredentialType="Windows" />

    </security>

  </binding>

</netTcpBinding>

經過檢視,發現所有丟擲異常的電腦,該使用者在AD域中都被禁用了。WCF在服務端因為是Windows認證,所以發現這個使用者有問題,就丟擲了這個異常。當把AD域中的使用者恢復以後,WCF也就正常了。

需要指出的是,還有可能的其他原因可以引發此異常,比如說WCF服務端需要impersonate客戶端身份的時候,就需要客戶端提供使用者名稱密碼,如果沒有提供,也會丟擲這個異常。

另外,如果對安全性要求沒有那麼高的話,我們可以禁用一切安全相關的設定,配置如下:

<bindings>

  <netTcpBinding>

    <binding name="customTcpBinding" maxReceivedMessageSize="20480000" transferMode="Streamed" >

      <security mode="None"></security>

    </binding>

  </netTcpBinding>

</bindings>

這樣,就再不進行身份認證,也就再也不會丟擲身份認證類似的異常了,只要相應的服務端IP與埠能訪問,那麼就可以正常呼叫。

相關推薦

伺服器拒絕客戶憑據 the server has rejected the client credentials

我們的WinForm程式同構WCF與部署在伺服器上的服務端相連。今天很多WinForm使用者反映,在使用的時候遇到問題,丟擲異常伺服器已拒絕客戶端憑據,the server has rejected the client credentials. 現在說一說WCF的安全認證

伺服器實時通知客戶方案,伺服器傳送/推送事件方案(2)server event,典型例子,可以用作股票、新聞資訊推送

server event是html5規範的一部分,它相比websocket使用起來更簡單,對伺服器的改動也最小 前端html部分 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&

redis叢集與分片(1)-redis伺服器叢集、客戶分片 redis叢集與分片(1)-redis伺服器叢集、客戶分片

redis叢集與分片(1)-redis伺服器叢集、客戶端分片   下面是來自知乎大神的一段說明,個人覺得非常清晰,就收藏了。 為什麼叢集? 通常,為了提高網站響應速度,總是把熱點資料儲存在記憶體中而不是直接從後端 資料庫中

NAT網路部分客戶無法連線Server的解決方法

客戶端通過NAT連線上網,有的客戶端可以訪問server端,有的不可以,通過訪問固定請求的URL抓包排查和解決問題。 解決方法: # sysctl -a |egrep "timest|recycle" net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_

伺服器中判斷客戶socket斷開連線的方法

1, 如果服務端的Socket比客戶端的Socket先關閉,會導致客戶端出現TIME_WAIT狀態,佔用系統資源。 所以,必須等客戶端先關閉Socket後,伺服器端再關閉Socket才能避免TIME_WAIT狀態的出現。 2, 在linux下寫socket的程式的時候,如果嘗

單點登入CAS使用記:關於伺服器超時以及客戶超時的分析

我的預想情況  一般情況下,當用戶登入一個站點後,如果長時間沒有發生任何動作,當用戶再次點選時,會被強制登出並且跳轉到登入頁面, 提醒使用者重新登入。現在我已經為站點整合了CAS,並且已經實現了單點登入以及單點登出,那麼當用戶使用過程中,發生了超時的情況, 估計也是自動的強行登

伺服器獲取真實客戶 IP

0x01 先查個問題 測試環境微信支付通道提示網路環境未能通過安全驗證,請稍後再試,出現這種情況一般首要 想到可能是雙方網路互動中微信方驗參與我們出現不一致,翻了下手冊確定是這類問題開始排查環節 可能獲取真實IP方式錯誤 getenv('HTTP_CLIENT_IP') g

伺服器實時通知客戶方案,伺服器傳送/推送事件方案(1)websocket

服務端 @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter(){ return new ServerEndpointEx

C# 之 獲取伺服器IP,客戶IP以及其它

1、獲取客戶端IP:Request.ServerVariables.Get("Remote_Addr").ToString(); 2、獲取客戶端主機名:Request.ServerVariables.Get("Remote_Host").ToString(); 3、客戶端瀏覽器:Request.

IdnentiyServer-使用客戶憑據訪問API

情景如下:一個客戶端要訪問一個api,不需要使用者登入,但是又不想直接暴露api給外部使用,這時可以使用identityserver新增訪問許可權。 客戶端通過clientid和secrect訪問identitserver的Token Endpoint,獲取accesstoken; 接著客戶端再使用acces

伺服器與一個客戶的多次連線連線

這次是一個伺服器與一個客戶端可以多次連線,與上次有所不同的是讓客戶端可以持續傳送資料與伺服器端連線,不僅僅是之連線一次,下面我們直接給出程式碼,然後分析結果 //伺服器端 #include<st

Ubuntu搭建VPN伺服器以及配置客戶連線

伺服器環境:Ubuntu 16.0.4.2  客戶端環境:windows7 VPN伺服器搭建 一,解除安裝pptpd以及iptables(對於之前VPN配置錯誤的) #解除安裝pptpd sudo apt-get autoremove pptpd sudo apt-get

java多執行緒通訊(伺服器與多客戶

基於TCP的多執行緒通訊 伺服器執行緒: package com.netproject1; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOExc

LINUX下socket實現伺服器與多客戶通訊(一)

一直對網路方面的技術比較感興趣,有時間就學習學習。雖然現在很多高階語言都已將網路程式設計部分做了封裝處理,使之使用更加方便,但是學習基礎原理,還是一個程式設計師必須要做的。 linux下的socket程式設計原理,網路上已經有大把的詳細說明,這裡不做說明,程式碼中已有簡單註釋。 具體方法,有

[流媒體伺服器搭建] EasyDarwin伺服器搭建及客戶推流完整示例

Windows下環境搭建一、準備工作,需要先下載我們需要的程式1、EasyDarwin  下載地址:https://github.com/EasyDarwin/EasyDarwin2、ffmpeg         下載地址:http://ffmpeg.org/3、nginx

Redis 學習(三)redis伺服器叢集、客戶分片

下面是來自知乎大神的一段說明,個人覺得非常清晰,就收藏了。 為什麼叢集? 通常,為了提高網站響應速度,總是把熱點資料儲存在記憶體中而不是直接從後端資料庫中讀取。Redis是一個很好的Cache工具。大型網站應用,熱點資料量往往巨大,幾十G上百G是很正常的事兒,在這種情

3.Redis 學習(三)redis伺服器叢集、客戶分片

下面是來自知乎大神的一段說明,個人覺得非常清晰,就收藏了。 為什麼叢集? 通常,為了提高網站響應速度,總是把熱點資料儲存在記憶體中而不是直接從後端資料庫中讀取。Redis是一個很好的Cache工具。大型網站應用,熱點資料量往往巨大,幾十G上百G是很正常的事兒,在這種

Centos7安裝搭建NTP伺服器和NTP客戶同步時間

NTP簡介: NTP是網路時間協議(Network Time Protocol),它是用來同步網路中各個計算機的時間的協議。 在計算機的世界裡,時間非常地重要 例如:對於火箭發射這種科研活動,對時間的統一性和準確性要求就非常地高,是按照A這臺計算機的時間,還是按照B這臺計算機的時間?

HTTP伺服器與android客戶的json互動

廢話就不多說了,直接上程式碼: 伺服器端: ①MySQL中建立一個數據庫hello,建一張表tab_user,新增欄位id,username,password。然後隨便新增幾條記錄。 ②新建Java Web工程HelloServer。 ③在WEB-INF目錄下的lib

伺服器基於workerman,客戶基於ODSocket的TCP,socket通訊,本地測試

<?php require_once './workman/Autoloader.php'; use Workerman\Worker; // use Workerman\WebServer; // run MainThread $tcp_worker = new Worker ( "tcp://0