문제

바깥쪽으로 향하는 웹 서비스가 있지만 유효한 클라이언트로부터 요청이 제공되도록 확인 시스템을 생성해야합니다.

원래 웹 서비스가 다음과 같이 정의되어 있다고 가정 해 봅시다.

[OperationContract]
public void Service.RequestMethod (string clientId, int reqNumber,
    string reqText)
{
    // do stuff with the parameters
}

요청이 실제로 clientId 매개 변수.

내 현재 계획은 메소드 서명에 다른 매개 변수를 추가하여 종류의 체크섬을 제공하는 것입니다.

[OperationContract]
public void Service.RequestMethod (string clientId, int reqNumber,
    string reqText, string reqChecksum)
{
    // verify reqChecksum, then
    // do stuff with the parameters
}

승인 된 클라이언트가 체크섬을 계산했는지 확인하는 기능이 필요합니다. 그것은 계산해야합니다 reqNumber 그리고 reqText 클라이언트와 서버에서 알려진 클라이언트 별 "비밀번호"뿐만 아니라 매개 변수.

사실상 : 그것은 다음과 같아야합니다.

private bool VerifyChecksum(int reqNumber, string reqText,
    string clientPassword, string reqChecksum)
{
    // hash reqNumber, reqTxt, and clientPassword
    // ensure it matches reqChecksum
}

이 해싱 기능이나 모델 전체에 대한 제안이 있습니까?

메시지 별, 클라이언트 별 및 추측이 어려워야합니다 (높은 엔트로피).

도움이 되었습니까?

해결책

당신은 아마 어떤 종류의 것을 찾고있을 것입니다 . 해시를위한 MD5와 같은 것. MD5의 전체 아이디어는 "일부"데이터에 적용하고 값을 얻는 것입니다. "일부 데이터"부분이 모든 사람에게 알려지지 않는 한 그 가치를 재현하는 것은 거의 불가능합니다.

다른 팁

표준 웹 서비스 인증 방법 중 하나를 사용하지 않는 이유는 무엇입니까? 잘 알려져 있고 널리 구현 된 솔루션을 선택할 수 있으며 매개 변수와 인증 정보를 모두 전달하여 인터페이스를 모으지 않을 것입니다.

인증 된 클라이언트가 둘 이상의 'clientID'를 통과 할 수 있다면 여전히 승인 문제가있을 수 있지만 다시 알려진 솔루션이 많이 있으며 전적으로 귀하의 편이 있습니다. 예를 들어, 허용 가능한 모든 (userId, clientId, methodName) 조합을 나열하고 다른 모든 것을 금지하는 ACL 구현까지 갈 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top