2016-09-05 21 views
1

私はOAuth2のためにADFS3.0をセットアップしました。そして私はついにクライアント-APP上に「アクセストークン」を手に入れました。このようなadfs(oauth2)トークン検証howto?

Somethig:

HTTP/1.1 200 OK 
Content-Type: application/json;charset=UTF-8 

{ 
    "access_token":"<access_token>", 
    "token_type":"bearer", 
    "expires_in":3600 
} 

トークンは、ヘッダ部、ペイロード及び署名から成ります。

私はリソースサーバーにトークンでリクエストを送信しました。そして、私は自分のリソースサーバーからADFS(認証サーバーとIDP)に対してトークンを検証したいと考えています。

これは、ADFSの私の証明書です:

CertificateType : Token-Signing 
IsPrimary  : True 
StoreLocation : CurrentUser 
StoreName  : My 
Thumbprint  : xyz 

はどのようにこれを行うことができますか?

更新: トークンに関するいくつかの情報:

ヘッダー:

{ 
    "typ": "JWT", 
    "alg": "RS256", 
    "x5t": "abc" 
} 

ペイロード:

{ 
    "aud": "https://serverurl", 
    "iss": "http://.../adfs/services/trust", 
    "iat": 1473063317, 
    "exp": 1473066917, 
    "auth_time": "2016-09-05T08:15:17.875Z", 
    "authmethod":  "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", 
    "ver": "1.0", 
    "appid": "some-uid" 
} 

署名:

{ 
    RSASHA256(
    base64UrlEncode(header) + "." + 
    base64UrlEncode(payload), 
    Ceritifate/secret 
} 

計画の認可グラント・フロー(ショートバージョンなし認証許可コードの詳細):

我々はADFS(AUTH + IDP)からトークンを要求し、当社独自のクライアントアプリ(発行者)を持っているが、その後にトークン+リクエストを送信しますリソースサーバーとリソースサーバーは、ADFSに対してトークンを検証する必要があります。私が見逃しているのは、シグナチャ/トークンが有効な場合、ADFSからのいくつかのエンドポイントです。 ADFSサーバー上の/ adfs/oauth2エンドポイント(どこからアクセス権が付与されているのですか)がありますが、マイクロソフトのドキュメントが不足しています...

+0

ADFSのOAuth 2実装に関するMicrosoftのドキュメントは存在しません。この問題をどうやって解決しましたか?私は同じ質問があります。 –

答えて

0

署名を検証します。

もしそうなら、OAuth2 : Verifying the Azure AD JWT signatureを参照してください。

"well-known/openid-configuration"を使って "common/discovery/keys"を取得し、そこから証明書を構築してください。

+0

署名の正当性が証明されていれば、私は「はい」と言います。しかし、私はこのリンクを全く理解していないことを認めなければなりません。 Azureへの接続は必要ですか?検証に自分のADFSサーバーを使用できないのはなぜですか? – Gobliins

+0

いいえ、Azureの部分を忘れてください。署名の確認方法です。また、適切なオーディエンス、期待された発行者、期限切れのトークンなどを確認してください。RFC 7662を参照してください。 – nzpcmad

+0

自分の組織のADFSを使用できます。唯一の部分は、アプリケーションでサードパーティ認証を使用する場合、組織に所属するIdentityサーバーによって提供されるトークンをアプリで検証できるように、組織のIDサーバーを信頼する必要があります。 主にあなたが信用しなければならない発行人です。 –

関連する問題