2017-06-19 34 views
0

私は以下の設定をしています。mvc Webサイトで認証するasp.net web apiトークンを使用

asp.net web api 2プロジェクトと通信する2つのモバイルアプリで、Token Authenticationを使用しています。各モバイルクライアントは、ユーザー名とパスワードを使用することなく、トークンクライアント側を格納します。

次に、標準のCookie認証を使用するasp.net mvc 5プロジェクトでWebポータルをホストしています。

私のモバイルアプリは、ウェブポータルのmvc 5からウェブページを読み込む必要がある場合があります。たとえば、支払いゲートウェイのページです。しかし、このページをロードするには、クライアントを認証する必要があります。

現時点では、ユーザーにWebポータルのWebラップを表示します。再度ログインするように求められます。これは非常に悪いUXです。

どのように私はMVCのサイトでこのような機能を想像してる私のweb api Token

を使用して、MVCのサイトでクライアントを認証することができます

pubic Action LogInWithToken(String token) 
{ 
var user = GetUserFromToken(token); 
var isAllowed = AuthenticateUserFromToken(user,token); 
if(!isAllowed) return 401; 
return CreateCookieForUser(user); 
} 
+0

カスタム認証属性を使用して、要求データを確認し、トークンが存在する場合にユーザーを検証できます。 [ここ](https://msdn.microsoft.com/en-us/library/ee707357(v = vs.91).aspx)をチェックし、この点について検索してください。 –

+1

可能な重複 - https://stackoverflow.com/questions/38661090/token-based-authentication-in-web-api-without-any-user-interface –

+0

@SivaGopalはい私はそれを行うことができます。トークンをどのように復号化しますか?私はまだ '文字列トークン'を取得し、トークンからユーザーとタイムスタンプを取得する方法が必要です。 – Zapnologica

答えて

1

はでホストされているWeb APIを2アプリケーションですMVC 5アプリケーションと同じマシンですか?

もしそうであれば、手動でトークンを逆シリアル化してユーザーのIDを取得できます。 Extract User details from web api auth token in MVCを参照してください。

そこから、CookieAuthenticationで自動的にサインインすることができます。

しかし、それらが異なるマシンでホストされている場合は、プロジェクトのWeb.Configファイルに同じマシンキーを指定する必要があります。

+0

彼らは紺碧のWebサービスでホストされています。私はそれらを水平に拡大することができるように設計しています。そのため、同じマシンであることに頼る必要はありません。あなたが送るリンクは、JWTを使うためにAPIトークンを変更する必要があります。標準のAPIトークンを使ってどうすればいいですか? – Zapnologica

関連する問題