SSL 网页证书的颁发机构证书,是我自己建立的,在用户那里没有放在信任区域。用户运行我的应用程序来访问该 SSL 网页。考虑到易用性,不好要求用户把这个证书导入到信任区域。这样 HttpWebRequest 访问 SSL 网页就要出错。有以下问题:1.是否一定要把颁发机构的证书导入到用户信任区,才可以用HttpWebRequest访问 SSL 呢?2.有没有什么好的工具文件,可以把证书导入到信任区域?我只是想加密传输,为什么非要用户信任我的证书的颁发机构呢?HttpWebRequest 没有机会让我点
信任。
信任。
VB 原始檔: VB\clientGETwithSSL.vb Imports System
Imports System.Net
Imports System.IO
Imports System.TextNamespace Client
Public class ClientGETssl Public Shared bShow As Boolean
Public Shared Sub Main() Dim args As String ()
args = Environment.GetCommandLineArgs() If (args.Length < 2)
showusage()
Else
If (args.Length > 2)
bShow = false
Else
bShow = true
End If
getPage(args(1))
End If Console.WriteLine()
Console.WriteLine("按 Enter 繼續...")
Console.ReadLine()
End Sub public Shared Sub showusage()
Console.WriteLine("嘗試 GET 一個 URL")
Console.WriteLine()
Console.WriteLine("使用方式:")
Console.WriteLine("ClientGETwithssl URL")
Console.WriteLine()
Console.WriteLine("例如:")
Console.WriteLine("ClientGETwithssl https://www.microsoft.com/net/")
End Sub public Shared Sub getPage(url As String)
Try
Dim req As WebRequest
Dim result As WebResponse
Dim ReceiveStream As Stream
Dim encode As Encoding
Dim sr As StreamReader req = WebRequest.Create(url)
result = req.GetResponse()
ReceiveStream = result.GetResponseStream()
encode = System.Text.Encoding.GetEncoding("utf-8")
sr = new StreamReader( ReceiveStream, encode ) Console.WriteLine()
Console.WriteLine("收到回應資料流")
If bShow
Dim read(256) As Char
Dim count As Integer = sr.Read( read, 0, 256 ) Console.WriteLine("HTML...")
Console.WriteLine()
Do While count > 0
Dim str As String = new String(read, 0, count)
Console.Write(str)
count = sr.Read(read, 0, 256)
Loop
Console.WriteLine("")
End If
Catch Exc As Exception
Console.WriteLine()
Console.WriteLine("找不到要求的 URI 或格式錯誤")
End Try
End Sub
End Class
End Namespace
Overloads Public Function LoginUser( _
ByVal szRetURL As String, _
ByVal iTimeWindow As Integer, _
ByVal fForceLogin As Boolean, _
ByVal szCOBrandArgs As String, _
ByVal iLangID As Integer, _
ByVal strNameSpace As String, _
ByVal iKPP As Integer, _
ByVal fUseSecureAuth As Boolean, _
ByVal oExtraParams As Object _
) As Integer[C#]
public int LoginUser(
string szRetURL,
int iTimeWindow,
bool fForceLogin,
string szCOBrandArgs,
int iLangID,
string strNameSpace,
int iKPP,
bool fUseSecureAuth,
object oExtraParams
);[C++]
public: int LoginUser(
String* szRetURL,
int iTimeWindow,
bool fForceLogin,
String* szCOBrandArgs,
int iLangID,
String* strNameSpace,
int iKPP,
bool fUseSecureAuth,
Object* oExtraParams
);[JScript]
public function LoginUser(
szRetURL : String,
iTimeWindow : int,
fForceLogin : Boolean,
szCOBrandArgs : String,
iLangID : int,
strNameSpace : String,
iKPP : int,
fUseSecureAuth : Boolean,
oExtraParams : Object
) : int;參數
szRetURL
URL,是在登入完成之後,登入伺服器應該將使用者重新導向到該 URL。傳遞 Null 參考 (在 Visual Basic 為 Nothing) ,指示 Passport 應該使用預設值。
iTimeWindow
時間值,以秒為單位。傳遞 -1,指示 Passport 應該使用預設值。
fForceLogin
若要讓登入伺服器將 iTimeWindow 參數與自從使用者上次登入的時間作比較,則為 true ;若要讓登入伺服器將 iTimeWindow 與上次票證更新的時間作比較,則為 false 。傳遞 -1,指示 Passport 應該使用預設值。
szCOBrandArgs
字串,指定將變數做為查詢字串變數,附加至參加者 Cobranding Template 指令碼頁的 URL。傳遞 Null 參考 (在 Visual Basic 為 Nothing) ,指示 Passport 應該使用預設值。
iLangID
地區設定識別項 (LCID),指定登入網頁中應該要顯示的語言的。傳遞 -1,指示 Passport 應該使用預設值。
strNameSpace
定義域命名空間,您要將使用者導向此而不使用 Passports 來登錄。指定的名稱空間在 Partner.xml 元件設定文件 (CCD) 中以「定義域名稱」項目出現。典型的預設命名空間是「passport.com」。傳遞 Null 參考 (在 Visual Basic 為 Nothing) ,指示 Passport 應該使用預設值。
iKPP
傳遞 -1,指示 Passport 應該使用預設值。只有在實作兒童 Passport 服務時這個參數才有關;然而,兒童 Passport 服務目前不支援使用這個方法。
fUseSecureAuth
SSL 簽入在目前版本的登入伺服器中無法做為選項使用。Passport 管理員方法包含 SSL 登入參數,而且它們可能是語法的必要項,但是目前伺服器會忽略它們。檢查 Passport 網站是否更新 SSL 登入的狀態。傳遞 -1,指示 Passport 應該使用預設值。
oExtraParams
要直接插入挑戰驗證標頭中的名稱值配對,尤其是 Passport 感知的驗證互動。傳遞 Null 參考 (在 Visual Basic 為 Nothing) ,指示 Passport 應該使用預設值。
傳回值
整數結果程式碼。備註
oExtraParams 參數目前主要的目的是將值傳遞給 cbtxt 變數。 cbtxt 是用來指定 Passport 感知應用程式之認證管理員對話方塊中的可自訂文字,而且通常是用來辨識這個驗證來特別做為 Passport 驗證。Cbtxt= 之後的值應該是有引號的字串,例如 cbtxt= "Logon to Passport"。如需詳細資訊,請到 MSDN Library (http://msdn.microsoft.com/library) 中參閱 Passport SDK 文件中的 IPassportManager2.LoginUser。需求
平台: Windows 2000, Windows XP Professional, Windows Server 2003 系列請參閱
PassportIdentity 類別 | PassportIdentity 成員 | System.Web.Security 命名空間 | PassportIdentity.LoginUser 多載清單 | PassportIdentity 成員 (Visual J# 語法) | Managed Extensions for C++ 程式設計
result = req.GetResponse()
Dim MyURI As String = "https://www.contoso.com/"
Dim Wreq As WebRequest = WebRequest.Create(MyURI)[C#]
String MyURI = "https://www.contoso.com/";
WebRequest WReq = WebRequest.Create(MyURI);
當驗證程序完成時,驗證模組會將 Authorization 執行個體傳回給包含存取網際網路資源所需資訊的 WebRequest。
某些驗證配置不用事先要求資源即可以驗證使用者。應用程式可藉著以資源預先驗證 (Preauthenticate) 使用者來節省時間,這樣能減少至少一個到伺服器的來回行程。或者,它可以在程式啟動期間執行驗證,以便能更快速回應後來的使用者。能夠使用預先驗證的驗證配置設定 CanPreAuthenticate 屬性為 true。