Là sự tiếp nối của this question, có vấn đề tôi đang gặp phải với dotnetopenauth.Có phải một lĩnh vực OpenID phải là URL cơ sở của trang web không?
Về cơ bản, tôi tự hỏi liệu lĩnh vực được chỉ định trong RP có phải là URL cơ sở thực tế của ứng dụng không? Tức là, (http://localhost:1903
)? Do kiến trúc hiện có tại chỗ rất khó để loại bỏ các chuyển hướng - Tôi đã cố gắng thiết lập các lĩnh vực để điều khiển cơ sở OpenId (http://localhost:1903/OpenId
) và thử nghiệm bằng tay đã tạo ra các tài liệu XRDS. Tuy nhiên, việc áp dụng dường như đóng băng, và các bản ghi EP cho thấy các lỗi sau:
2012-10-10 15:17:46,000 (GMT-4) [24] ERROR DotNetOpenAuth.OpenId - Attribute Exchange extension did not provide any aliases in the if_available or required lists.
Code:
Dựa Đảng:
public ActionResult Authenticate(string RuserName = "")
{
UriBuilder returnToBuilder = new UriBuilder(Request.Url);
returnToBuilder.Path = "/OpenId/Authenticate";
returnToBuilder.Query = null;
returnToBuilder.Fragment = null;
Uri returnTo = returnToBuilder.Uri;
returnToBuilder.Path = "/";
Realm realm = returnToBuilder.Uri;
var response = openid.GetResponse();
if (response == null) {
if (Request.QueryString["ReturnUrl"] != null && User.Identity.IsAuthenticated) {
} else {
string strIdentifier = "http://localhost:3314/User/Identity/" + RuserName;
var request = openid.CreateRequest(
strIdentifier,
realm,
returnTo);
var fetchRequest = new FetchRequest();
request.AddExtension(fetchRequest);
request.RedirectToProvider();
}
} else {
switch (response.Status) {
case AuthenticationStatus.Canceled:
break;
case AuthenticationStatus.Failed:
break;
case AuthenticationStatus.Authenticated:
//log the user in
break;
}
}
return new EmptyResult();
}
Provider:
public ActionResult Index()
{
IRequest request = OpenIdProvider.GetRequest();
if (request != null) {
if (request.IsResponseReady) {
return OpenIdProvider.PrepareResponse(request).AsActionResult();
}
ProviderEndpoint.PendingRequest = (IHostProcessedRequest)request;
return this.ProcessAuthRequest();
} else {
//user stumbled on openid endpoint - 404 maybe?
return new EmptyResult();
}
}
public ActionResult ProcessAuthRequest()
{
if (ProviderEndpoint.PendingRequest == null) {
//there is no pending request
return new EmptyResult();
}
ActionResult response;
if (this.AutoRespondIfPossible(out response)) {
return response;
}
if (ProviderEndpoint.PendingRequest.Immediate) {
return this.SendAssertion();
}
return new EmptyResult();
}
Bạn có thể giải thích chi tiết về việc đóng băng không? Có phải trình duyệt bị đóng băng không? Hay trang web không thay đổi tại một thời điểm nào đó trong luồng? Bạn có chuyển hướng vô hạn không? –