は、私が働いてディープリンクを得た方法である:
アズールからサンプルのログインページをダウンロードした後、私はその後REPLY_TOアドレスを更新するために、いくつかのC#のコードを追加してLogin.aspxのと呼ばれるaspxページにその内容をコピーしました。
以下に示すようにLogin.aspxの中のスクリプトタグと '& REPLY_TO = <% =にreturnurl%>' への変更 '& REPLY_TOを=' 検索:
<script src="https://sample.accesscontrol.windows.net:443/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=http%3a%2f%2flocalhost%2fSample&reply_to=<%=returnUrl%>&context=&request_id=&version=1.0&callback=ShowSigninPage" type="text/javascript"></script>
次に、ログインするには、次のコードを追加します.aspx。CS
今
using System;
using System.Web;
namespace Sample
{
public partial class Login : System.Web.UI.Page
{
protected string returnUrl = "";
protected void Page_Load(object sender, EventArgs e)
{
var wctx = Request.QueryString["wctx"];
var wreply = Request.QueryString["wreply"];
if (wctx == null || wreply == null) return;
var queryString = HttpUtility.ParseQueryString(wctx);
var ru = queryString["ru"];
if (ru == null) return;
returnUrl = Server.UrlEncode(wreply + ru);
}
}
}
は、ここにあなたのログインリンク/ボタンを作成する方法である:
それは動作しませんので、このようなリンクを作成しないでください。代わりに
<a href="Login.aspx">Login</a>
次のような認証後にのみアクセスできるページへのディープリンクを作成します。
<a href="SecurePage.aspx">Login</a>
私はこれまでのところGoogle IDでこれをテストしましたが、他のIDプロバイダでも動作することが期待されます。
私はこれを撮影することに興奮しました。しかし、これらの変更を加えることはやりにくく、実際にはUser.Identity.Nameがnullになり、Thread.CurrentPrincipal.Identity.Nameがnullになる原因となりました。ここ は、カスタムログインページのクエリ文字列にwctxの値である: '&wctx = RM%3D0%26id%3dpassive%26ruの%の3D%252fAccount%252fSettings.aspx' 私はそれだけ含まれている場合があります期待していましたリダイレクトURL。 – barsh
それは価値があるため、私はGoogle IDでテストしています。 @Andrew、あなたの提案は他のアイデンティティプロバイダーのために働くことができると思います。少なくとも私は正しい方向に向かっています。 – barsh
もちろん、ああ。私はあなたにLiveID固有の解決策を与えました。 Googleではうまくいきませんが、私は自分の答えを編集して、ログインリンクの外観を表示しています。 –