簡體   English   中英

使用WCF的身份驗證服務

[英]Authentication Service using WCF

我有一個自定義MembershipProvider,如下所示。 它根據Active Directory驗證用戶名和密碼。 我想把它作為“身份驗證服務”。 即使客戶端使用表單身份驗證或Windows身份驗證,這也應該有效。

有一個WCF“人力資源服務”,它提供員工信息。 “HR UI”網站正在使用“HR Service”WCF服務。 現在,我們需要確保在訪問“HR服務”操作之前,使用“身份驗證服務”對使用“HR服務”的任何客戶端進行身份驗證。 如果客戶端應用程序經過一次身份驗證,則下次不應再次驗證(直到應用程序關閉)。 當打開客戶端應用程序的新實例時,需要從頭開始進行身份驗證。

我們如何實現它? 我們是否有任何代碼樣本用於端到端流程演示?

注意:我應該能夠使用自托管服務進行測試。

注意:客戶端可以是任何平台(例如Java)。

namespace LijosCustomValidation
{
public sealed class LijoMembershipProvider : MembershipProvider
{

    public override bool ValidateUser(string username, string password)
    {
        bool isValid = true;
 //my logic to validate the user name and password
        return isValid;
    }

   //other implementations of Abstract Methods from MembershipProvider
  }

如果身份驗證成功,您的身份驗證服務應返回令牌。 然后,該令牌應該被呈現給HR服務。

關於人力資源服務目前做了什么,您有幾種選擇。 它可以知道驗證令牌的秘密,也可以調用auth服務來驗證令牌。

如果你知道秘密,那么令牌應該是一些可以驗證的值,因此它可以是對稱加密的用戶ID。 理想情況下,它應該有一個時間組件來防止重放攻擊。

我建議一些類似的東西

<hash value>|<token issue time>|<user id>

哈希值應該是第一個管道之后的所有內容的哈希值(sha1,md5等)。 然后,您可以對結果進行base64編碼並傳遞它。 然后驗證令牌可以檢查發布日期是否在某個時間范圍內。

您還可以選擇將令牌存儲在客戶端中的cookie中,並將cookie作為cookie傳遞給服務,或者將其作為服務的參數。 可能還有其他選項,具體取決於您的客戶端體系結構以及您希望如何構建服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM