1
我有一個Azure卷軸需要ACSv2身份驗證,我想從winforms應用程序訪問。我的許多客戶使用Windows XP,因此我無法使用WIF(Windows XP上不可用)。在這種情況下,爲我的Web請求獲取身份驗證令牌的最佳方式是什麼?從Winforms訪問ACS Azure
我有一個Azure卷軸需要ACSv2身份驗證,我想從winforms應用程序訪問。我的許多客戶使用Windows XP,因此我無法使用WIF(Windows XP上不可用)。在這種情況下,爲我的Web請求獲取身份驗證令牌的最佳方式是什麼?從Winforms訪問ACS Azure
對於桌面應用程序,你可以做到以下幾點:
這是類似當您要在Windows Phone應用程序中使用ACS時。我建議你看看這篇博文:Azure ACS on Windows Phone 7。以下是在用戶通過WebBrowser控件(在WP7上)登錄後解析令牌的示例代碼:
private void SignInWebBrowserControl_ScriptNotify(object sender, NotifyEventArgs e)
{
var acsResponse = ACSResponse.FromJSON(e.Value);
RequestSecurityTokenResponse rstr = null;
Exception exception = null;
try
{
string binaryToken = HttpUtility.HtmlDecode(acsResponse.securityToken);
string tokenText = RequestSecurityTokenResponseDeserializer.ProcessBinaryToken(binaryToken);
DateTime expiration = DateTime.Now + TimeSpan.FromSeconds(acsResponse.expires – acsResponse.created);
rstr = new RequestSecurityTokenResponse
{
Expiration = expiration,
TokenString = tokenText,
TokenType = acsResponse.tokenType
};
我想將其標記爲已回答。 「OnAuthenticateRequest」事件處理程序中的「ValidateRequest」方法正常工作,但對身份驗證管理器向創建的「ClaimsPrincipal」發出的「Authenticate」請求失敗。校長不是身份驗證,整個節目都停在那裏。我想這是一個配置問題,但我無法確定失敗的根源。 – 2013-02-19 09:32:53
好的。我已經得到這個工作。我的問題(我真的不明白這一點)是,我正在發送Web請求'http:// localhost/contacts/Directory',就像在示例中一樣,後驗證回調被觸發,一次爲該URL (http:// localhost/contacts/Directory /',但是沒有添加斜槓),並且測試現在可以正常工作 – 2013-02-19 14:27:10
要實現這個作爲winforms應用程序,我們必須更改HttpUtility(用於URL編碼),令牌存儲的位置以及使用Web瀏覽器的ObjectForScripting屬性來實現通知。 – 2013-02-19 14:33:15